防止在Git中推送本地更改
我已经克隆了一个仓库,我的仓库中的master
分支正在跟踪origin/master
。 我创build了一个work
分支,并改变了一些特定于我的开发机器的configuration文件,使应用程序工作。
我的正常工作stream程将切换到master
分支,合并在work
分支中work
更改,并向上游push
这些更改。 问题是我不希望我的特定chnages被推。 当我把我的work
分支合并到master
这些更改也合并。
到目前为止,我发现的唯一解决scheme并不是在work
提交这些更改,但这不是一个令人满意的解决scheme。
如果你想防止提交(因此也推)这些本地configuration文件,你可以使用git update-index –assume-unchanged 。 标有这个标志的文件将被认为永远不会改变(直到你用–no-assume-不变)重置标志)
如果文件还没有被跟踪,你可以将它们添加到一个.gitignore文件到你的本地仓库,否则你将需要使用git update-index --assume-unchanged
像Mauricio所说的那样。
以下是有关.gitignore文件的更多信息:
解决这个问题的一个办法就是,在你向上游推进之前,把你的工作分支变成主人。 我已经使用了一种技术,将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
这个樱桃select每个没有用NOCOMMIT(或DEBUG)标记的变化到主分支。
你需要的是一个.gitignore文件,并将所有的configuration文件添加到.gitignore文件中。
一旦你的.gitignore文件准备好了,你可能需要从caching中删除你的configuration文件
这是命令:
(Assume you use linux) vi .gitignore //Add all your config file inside //run the following command to remove your config file from GIT cache if your config files is already track by GIT git rm --cached myconfig.php