保持本地变化
我怎样才能安全地更新(拉)一个git项目,保持特定的文件不变,即使有上游的变化?
myrepo /配置/ config.php中
有没有办法,即使这个文件正在远程更改,当我拉,其他所有更新,但这个文件是不变的(甚至没有合并)?
PS。 我需要做我所问的,因为我只写基于git的部署脚本。 我无法将配置文件更改为模板。
所以,我需要编写不会丢失本地更改内容的更新脚本。 我希望有如下简单的事情:
git assume-remote-unchanged file1
git assume-remote-unchanged file2
然后git pull
有一个基于Git存储的简单解决方案。 把所有变化的东西都藏起来,把所有新东西都拿出来,把你的藏起来。
git stash
git pull
git stash pop
存储弹出可能会有冲突。 在你描述的情况下,实际上config.php
会有冲突。 但是,解决冲突是很容易的,因为你知道你把什么放在隐藏处是你想要的。 所以这样做:
git checkout --theirs -- config.php
如果你的repo文件中有一个文件应该由大多数文件创建者定制,那么将文件重命名为config.php.template
,并将config.php
文件添加到你的.gitignore
。
更新:这实际上回答了问题,但我认为KurzedMetal的答案确实是你想要的。
假如说:
master
origin
master
....你可以这样做:
# 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
如果需要频繁操作,可以为其创建别名。 请注意,如果您对config/config.php
有未提交的更改,则会导致它们丢失。
上一篇: git pull keeping local changes
下一篇: What are the differences between .gitignore and .gitkeep?