我想知道如果你在分支之间挤压,并在两者之间远程推送/拉出,会发生什么。
DEVELOPER 1
1. $ git checkout foo
2. $ git commit -m 'changed file' file.txt
$ git commit -m 'changed another file' file2.txt
3. $ git push
DEVELOPER 2
4. $ git checkout foo
5. $ git pull // gets commits from 2. above
6. $ git checkout bar
7. $ git merge foo
8. $ git rebase -i HEAD~3在1-3 --我对一些文件进行了一些本地更改,分别提交它们,然后推送。在4-8中--其他人拉出我的提交,签出另一个分支,合并第一个分支,然后尝试在合并中压缩提交。
这会不会搞乱历史,是不是很“糟糕”?
发布于 2012-10-11 18:42:39
git rebase -i HEAD~3将在bar分支中重放提交(压缩或未压缩),使分支foo引用的提交保持不变。
如果你的分支bar已经被推送了(参见"git rebase develop branch"),这是不好的,因为你需要强制推送它,并使bar上的其他开发人员陷入麻烦。
但它也不好,因为它将复制提交内容(在foo分支的内容和在bar上挤压的内容之间),使得将来从foo到bar的任何合并都将再次提交2和3。
这就是rebase的选项-p (--preserve-merges)可以派上用场的地方,以便保留合并的父级。但这可能与您想要做的事情(挤压)不兼容。
通常,尽量不要修改您刚刚拉取的公共历史记录(如分支foo上的commit 2和3)
https://stackoverflow.com/questions/12837097
复制相似问题