我在执行git pull origin master
我有一些文件具有本地配置设置并且与源不同
我已经将它们标记为代码未加攻击 - >
git update-index --assume-unchanged html/index.php
现在只要远程index.php文件没有改变,我就可以轻松地做git pull
,但是当index.php文件发生变化时我会这样做
git pull origin master
我得到以下错误
branch master -> FETCH_HEAD
d532f8d..d01836e master -> origin/master
error: Your local changes to the following files would be overwritten by
merge:
html/index.php
Please, commit your changes or stash them before you can merge.
Aborting
每当我遇到这个问题,我都要运行命令
git update-index --no-assume-unchanged [filepath/filename]
然后执行git pull,然后使用我的更改更新该配置文件并再次运行
git update-index --assume-unchanged html/index.php
我不需要在本地中更改远程配置文件,因此无需更新这些文件 我无法更改远程文件,因此我可以在本地执行哪些操作我不会遇到远程更新这些配置文件的问题
答案 0 :(得分:1)
请尝试使用--skip-worktree
:
git update-index --no-assume-unchanged -- a file
git update-index --skip-worktree -- a file
参见" Difference Between 'assume-unchanged
' and 'skip-worktree
'"更多:--skip-worktree
应该更好地抵制git pull
。
答案 1 :(得分:1)
我建议以下过程。让Git知道更改:
git update-index --no-assume-unchanged html/index.php
存储这些更改:
git stash save "Save local conf"
您现在可以拉出然后恢复本地更改:
git stash pop
,您可以接受本地更改来解决冲突。
最后,我将使用--skip-worktree保护文件。为什么? See here