git pull keeping local changes
我如何安全地更新(拉)一个Git项目,保持特定的文件不变,即使有上游的变化?
myrepo/config/config.php文件
有没有一种方法,即使这个文件在远程被更改,当我git pull时,其他的一切都被更新,但这个文件是不变的(甚至没有合并)?
我需要按我的要求做,因为我只写基于Git的部署脚本。我无法将配置文件更改为模板。
所以,我需要一种方法来编写更新脚本,它不会丢失本地更改的内容。我希望能做些简单的事情:
1 2 | git assume-remote-unchanged file1 git assume-remote-unchanged file2 |
然后是
有一个基于git-stash的简单解决方案。把你改变的东西都藏起来,把新东西都拿出来,把你的东西放进去。
1 2 3 | git stash git pull git stash pop |
号
在暗藏弹上可能会有冲突。在这种情况下,您描述的事实上,
1 | git checkout --theirs -- config.php |
如果您的报告中有一个文件,它应该是由大多数拉器定制的,那么将该文件重命名为类似于
更新:这字面上回答了所问的问题,但我认为Kurzedmetal的答案确实是你想要的。
假设:
…你可以这样做:
1 2 3 4 5 6 7 8 9 | # Do a pull as usual, but don't commit the result: git pull --no-commit # Overwrite config/config.php with the version that was there before the merge # and also stage that version: git checkout HEAD config/config.php # Create the commit: git commit -F .git/MERGE_MSG |
如果需要经常这样做,可以为此创建别名。请注意,如果您对
我们也可以试着用钢筋拉
1 | git pull --rebase origin dev |
。