git rebase创建本地-远程分歧

时间:2019-07-02 20:11:04

标签: git github

我的仓库在GitHub上。我正在mybranch上开发过master,不久前,它们都进行了新的提交

git checkout master
git checkout -b mybranch
...
git add ...
git commit
git push origin mybranch

====>

[master] -------commit0--
[mybranch]   \--commit1--

这时,我将commit1推送到GitHub。

我想检查commit1在新的master下是否仍然可以工作,所以我做了rebasecommit0commit1没有冲突)。据我了解,它现在看起来像:

git fetch --all
git checkout master
git rebase origin/master
git checkout mybranch
git rebase origin/master

======>

[master] -------commit0--------------
[mybranch]               \--commit1--

一切正常,我取得了新的进展commit2

git checkout mybranch
...
git add ...
git commit
git push origin mybranch

=====>

[master] -------commit0--------------------------
[mybranch]               \--commit1-----commit2--

我将更改推送到GitHub并准备进行拉取请求。但是,我现在在GitHub上看到有3个提交:

new to old:
- commit2
- commit0
- commit1

这很烦人,因为commit0已经是master的一部分,与mybranch无关。 commit0中的文件更改也显示在我的请求请求中,这是不可取的。所以我做了“自然” 事情:revert commit0中的mybranch

git checkout mybranch
git revert [commit0]
git push origin mybranch

现在,拉取请求看起来更好:它仅具有commit1commit2的更改。

但是,在我的本地仓库中,由于我revert编辑了commit0,所以我在mybranch上没有内容。 git log显示:

new to old:
- revertcommit0 (HEAD -> mybranch)
- commit2
- commit1
- commit0 (origin/master, origin/HEAD, master)
...

此时:

  • 我应该怎么做才能解决这种差异?我想在master上进行最新的mybranch提交,并且仅将相关更改推送到mybranch。这个要求太多了吗?
  • 我应该采取哪些其他措施来避免这种情况? merge也许是更好的做法吗?

0 个答案:

没有答案