mr1*_*086 1 php git merge webserver rebase
我把主人变成了分支时,我在分支上遇到了一些冲突.
场景是:
分支大师,做一些修改,提交所说的修改.Checkout master,进行一些更改,提交所述更改,checkout branch-1.试着改变主人 - 冲突..
现在我有其他开发人员以类似的方式工作.
Master在包括网络服务器在内的所有repo上保持同步,我不希望主人的历史被更改.
如果我解决过去与冲突点相冲突的rebase冲突,如果我检查主人并将其与分支合并 - 将更改主人的历史 - 或者这些冲突解决方案是否应用于所有合并的工作的顶部?
想象一下你有目前的情况:
- A - B - C - D
\ ^
- X - Y master
^
branch1
Run Code Online (Sandbox Code Playgroud)
运行git checkout branch1; git rebase master
将从branch1移动提交,以便它们应用于主分支的顶部:
master
v
- A - B - C - D
\
- X - Y
^
branch1
Run Code Online (Sandbox Code Playgroud)
这不会改变master,但它以两种方式改变branch1:
X
来自A
于D
你会改变提交的ID X
尽可能的Git而言,实际上它现在是一个全新的承诺(和因为X
有一个新的ID,Y
拥有新的父,所以Y
得到一个新的ID太,如果分支上有更多提交,那么等等.如果你已经将branch1推送到一个远程存储库,那么重新设置它是一个非常糟糕的主意; 改变已经分享的历史只会导致问题.
假设您没有推送branch1,则可以将其合并到master(with git checkout master; git merge branch1
)中,这将导致master被快速转发为commit Y
.这为您提供了一个整洁的线性历史,而无需更改主数据:
- A - B - C - D - X - Y
^
branch1 AND master
Run Code Online (Sandbox Code Playgroud)
如果您已经推送了branch1,那么您应该避免使用rebase并使用合并(使用git checkout master; git merge branch1
),这将不会更改其中任何一个的历史记录,但会M
在主分支上创建一个新的提交(在此图中标记):
- A - B - C - D - M
\ / ^
- X - Y - - master
^
branch1
Run Code Online (Sandbox Code Playgroud)