繁体   English   中英

基准恢复后git分支不等于master

[英]git branch not equal to master after rebase

我正在想弄清楚使用GIT的正确方法的想法。 我以为我知道了,但是最近我们遇到了一些问题。 这是我的观点,非常希望我能解决我的问题。

2个人(称为A和B)从事同一项目。

A所做的开发工作较少,但他负责审核B并将代码推送到生产中。

B完成大部分开发工作,但无法进行生产,因此需要A审查并批准其代码。

到目前为止,我们一直这样工作:

A正在研究“主”。

B正在分支'dev'上工作-dev是一个远程分支,B正在推送对其的更改,A可以从远程分支中提取。

A直接在“主”(已推送到生产)上进行更改。 当B完成某项功能时,A会将“ dev”合并到主节点(git checkout开发人员; git pull; git checkout主节点; git merge开发人员)

B仅在'dev'上工作,并告诉A何时合并。 如果A对主服务器进行了更改,则B会重新设置基础(git checkout master; git pull; git rebase dev; git checkout dev)

这似乎可以正常工作(并且我们认为这是一种正确的工作方式),但是无论如何,即使在A合并并B重新建立基础之后,“ dev”也不等于“ master”。

我们做错了什么,是否应根据需要使用其他方法/工作流程?

  • 注意:'dev'必须是远程分支,因为有时A会帮助B解决问题,并且'dev'也被推送到在线测试服务器,以便其他人可以进行测试。

我认为您误会了如何使用git rebase 您说B希望将他/她的工作重新基于master ,该开发人员会这样做:

git checkout master
git pull
git rebase dev
git checkout dev

当您在master上运行git rebase dev时,(粗略地)说要接受master但不在dev所有提交,并尝试重新应用那些在master之上引入新颖更改的提交。 您可能想要执行以下操作:

git checkout master
git pull
git checkout dev
git rebase master

......使任何新的dev是在上面重新应用master 请注意,这些命令后,你只会想到devmaster是一样的,如果有什么在新的dev

作为更一般的评论,找出类似情况的历史记录的最简单方法通常是使用一种工具,该工具向您显示提交图的图形表示。 例如,如果您运行gitk --all ,则应该能够看到masterdev在哪里,以及为什么它们没有指向您期望的同一提交。

另外,值得注意的是,为了避免由于重写已发布的历史记录而引起的混乱,当dev分支包含尚未合并到master已发布提交时,B可能希望避免进行重新设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM