1

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

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

这会破坏历史,是“坏”吗?

4

1 回答 1

1

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

如果您的分支bar已经被推送(参见“ git rebase develop branch ”),那就不好了,因为您需要强制推送它并使其他开发人员bar陷入困境。

但它也很糟糕,因为它会复制提交内容(在foo分支的内容和被压扁的内容之间bar,使任何未来的合并从footo再次bar应用提交 2 和 3。 这就是选项( ) 的位置rebase 可以派上用场,以保留合并的父级。但这可能与您想做的事情(壁球)不兼容。
-p--preserve-merges

一般来说,尽量不要修改您刚刚提取的公共历史记录(例如分支上的提交 2 和 3 foo

于 2012-10-11T10:42:38.987 回答