每隔一段时间,我一直在git中遇到一些奇怪的行为。当我合并到另一个对同一文件进行了无关更改的分支时,我删除了对一个分支中的文件所做的更改。
假设我从分支机构开始。以下是发生的事情的大致轮廓:
vim foo.txt
git add foo.txt
git commit
git checkout -b test
vim foo.txt
git commit -a -m added a new line to foo.txt
git checkout master
vim foo.txt
git commit -a -m made some unrelated change
git merge test
此时,我将发现我在主分支中的foo.txt中所做的更改已被删除。
我正在进行许多其他更改并在所有这些中间执行其他git操作。由于像这样的合并是git的全部内容,我觉得我可能在某些时候做错了。
有谁知道什么?
答案 0 :(得分:0)
因为测试分支上的提交是最后一次并且test具有可以解析共同祖先提交的提交,所以默认行为是使用test中的新信息作为最新信息。您可以使用-s选项强制执行该行为。请参阅此链接以获取示例:http://www.kernel.org/pub/software/scm/git/docs/git-merge.html
使用工作流示例编辑
mkdir showoff_git
cd showoff_git
git init
touch file_a
echo "line 1" >> file_a
git add .
git commit -m "initial commit"
git checkout -b test
sed -i='' s/1/2/ file_a
git add .
git commit -m "bluffing"
git checkout master
git merge -s ours test