Github 我有两个git分支开发和掌握,但错误地将一些代码直接签入掌握

Github 我有两个git分支开发和掌握,但错误地将一些代码直接签入掌握,github,git-stash,Github,Git Stash,一些代码被直接推送到不在开发分支中的master 还有一些代码是签入开发的,但还没有合并到master中 同步两个分支的最佳方式是什么,这样两个分支都将具有相同的代码?通常,您会将远程主分支视为有关产品状态的最终权限。在这种假设下,您可能首先使用来自主控的最新更改更新开发,然后将更新后的开发分支推回到主控。这里有一个方法: git fetch origin git checkout develop git merge origin/master # resolve any merge confl

一些代码被直接推送到不在开发分支中的master

还有一些代码是签入开发的,但还没有合并到master中


同步两个分支的最佳方式是什么,这样两个分支都将具有相同的代码?通常,您会将远程
分支视为有关产品状态的最终权限。在这种假设下,您可能首先使用来自
主控
的最新更改更新
开发
,然后将更新后的
开发
分支推回到
主控
。这里有一个方法:

git fetch origin
git checkout develop
git merge origin/master
# resolve any merge conflicts, etc.
git push origin develop
然后,您可以将
development
合并到
master
。如果您使用的是GitHub之类的东西,那么这可能是通过拉请求实现的。因此,您可以从
develope
创建一个pull请求,指向
master
作为目标分支。如果要在本地进行合并,则可以尝试:

git checkout master
git merge develop
git push origin master

但大多数大型软件项目都使用类似GitHub或Bitbucket的repo来阻止任何人以这种方式直接更新
master

如果我理解的话,通常你会承诺
develope
,然后将
develope
合并到
master
中<代码>主控
总是落后于
开发
。差不多吧

A - B - C - D [master]
             \
              E - F - G [develop]
您可以使用
git log--decoration--graph
获得存储库的这种视图

但是有人直接向下面的
master
H-I
做出了承诺,而您就遇到了这种情况

A - B - C - D - H - I [master]
             \
              E - F - G [develop]
相反,你想要这个

A - B - C - D [master]
             \
              E - F - G - H - I [develop]

我们又来了

A - B - C - D - H - I [master]
             \
              E - F - G [develop]
您可以使用
git cherry pick
develope
之上复制
H-I

git checkout develop
git cherry-pick H I

A - B - C - D - H - I [master]
             \
              E - F - G - H1 - I1 [develop]
然后将
master
移回D

git checkout master
git reset --hard D

A - B - C - D [master]
             \
              E - F - G - H1 - I1 [develop]
--force
推动两个分支