git squash合并分支时

时间:2012-10-11 10:06:46

标签: git git-merge

我想知道如果你在分支之间挤压并在远程推/拉之间会发生什么。

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 - 其他人拉我的提交,检查另一个分支,合并第一个,然后尝试压缩合并中的提交。

这会弄乱历史,是不是"坏"?

1 个答案:

答案 0 :(得分:1)

git rebase -i HEAD~3将重播 bar 分支中的提交(压扁或不压缩),而分支foo引用的提交保持不变。

如果您的分支bar已被推送(请参阅“git rebase develop branch”),那就太糟糕了,因为您需要强制推送它并让bar上的其他开发人员遇到麻烦。< / p>

但它也很糟糕,因为它会重复提交内容(在foo分支和bar之间压缩的那些内容之间,使得foo的任何未来合并到bar再次申请 提交2和3 这就是rebase的选项-p--preserve-merges)可以派上用场的地方,以便保留合并的父母。但这可能与你想做的事情不相容(壁球)。

一般情况下,尽量不要修改刚刚提取的公开历史记录(例如分支foo上的提交2和3)