繁体   English   中英

意外将远程分支合并到本地主服务器。 我该如何退出?

[英]Accidentally merged remote branch to local master. How do I back out?

我在本地管理员上做了很多工作,因此决定需要一个新分支。 我在工作中的机器上创建了分支diffraction并将其推送:

$ git checkout -b diffraction
$ git push

然后我去了另一台机器,取了:

$ git fetch
...
 * [new branch]      diffraction -> origin/diffraction
...
$ git merge origin/master
Already up-to-date.
$ git merge origin/diffraction
Merge made by the 'recursive' strategy.
 .gitignore               |    4 +-
 Makefile                 |   11 +
...
 9 files changed, 8225 insertions(+), 24 deletions(-)
 create mode 100644 
...
$ git branch
  atmosphere
* master
  rollback

diffraction分支。 另外,我只是将原点/衍射的东西拉到本地主节点上,而不是获得一个新的分支并在其中签出。 我以为那是圆顶。

  1. 如何从本地主服务器撤消更改(已提交但未推送)? 我希望它始终指向原点/主节点。

  2. 如何将原点/衍射获取局部衍射? 让它自动指向那里可能会很好。

git merge origin/diffraction您告诉Git将“原点/衍射”合并到当前分支中。 相反,您想要的是告诉Git基于“起源/衍射”创建一个新的本地分支。

这可以通过git checkout -b diffraction origin/diffraction ,甚至更简单:

git checkout diffraction

如果您要撤消您错误执行的合并,则可以执行以下操作:

git reset --hard @^

这可能会将当前master分支的指针重置为上一个提交,您可能需要使用git show @^来检查上一个提交是否是您想要的。 否则,您需要用要重置为的提交的SHA-1替换'@ ^'。

设置

git clone https://github.com/svnpenn2/foo foo-1
git clone https://github.com/svnpenn2/foo foo-2
cd foo-1
set $RANDOM
echo $1 > README.md
git commit -am $1
git checkout -b diffraction
git push origin diffraction
cd ../foo-2
git fetch
git merge origin/diffraction

问题

$ git branch
* master

解决方案

$ git checkout diffraction
Branch diffraction set up to track remote branch diffraction from origin.
Switched to a new branch 'diffraction'

$ git branch
* diffraction
  master

暂无
暂无

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

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