防止在Git中推送本地更改

Gon*_*afa 62 git git-push

我克隆了一个存储库,我的仓库中的master分支正在跟踪origin/master.我创建了一个work分支并更改了一些特定于我的开发机器的配置文件,以使应用程序正常工作.

我的正常工作流程是切换到master分支,合并work分支中push的更改以及上游的更改.问题是我不希望我的特定chnages被推.当我合并我的work分支时,master这些更改也会合并.

到目前为止,我发现的唯一解决方案是不进行这些更改,work但这不是一个令人满意的解决方案.

Mau*_*fer 82

如果你想阻止提交(因此也推送)这些本地配置文件,你可以使用git update-index --assume-unchanged.标记为此标志的文件将被假定为永不更改(直到您使用--no-assume-unchanged重置标志)


Wal*_*shi 8

如果文件尚未被跟踪,您可以将它们添加到.gitignore文件到本地存储库,否则您将需要git update-index --assume-unchanged像Mauricio所说的那样使用.

以下是有关.gitignore文件的更多信息:

http://git-scm.com/docs/gitignore


Gre*_*ill 5

解决这个问题的一种方法是在你向上游推进之前,从工作分支中"挑选"每个变化.我使用了一种技术,我在提交消息中包含像NOCOMMIT这样的单词,仅用于本地更改,然后使用类似这样的shell脚本:

#!/bin/sh

BRANCH=`git branch | grep ^\\* | cut -d' ' -f2`
if [ $BRANCH != "master" ]; then
  echo "$0: Current branch is not master"
  exit 1
fi

git log --pretty=oneline work...master | grep -v -E '(NOCOMMIT|DEBUG):' | cut -d' ' -f1 | tac | xargs -l git cherry-pick
Run Code Online (Sandbox Code Playgroud)

这个樱桃选择将NOCOMMIT(或DEBUG)标记到主分支中的每个更改.