我想知道如果你在分支之间挤压并在远程推/拉之间会发生什么。
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 - 其他人拉我的提交,检查另一个分支,合并第一个,然后尝试压缩合并中的提交。
这会弄乱历史,是不是"坏"?
答案 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)