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

时间:2014-05-17 14:17:28

标签: git

我在本地大师身上做了很多工作,我决定需要一个新的分支。 我在工作的机器上创建了一个分支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. 如何从本地主人退出更改(已提交但未推送)?我希望它始终指向origin / master。

  2. 我如何将原点/衍射提取到局部衍射?可能会自动指向那里。

2 个答案:

答案 0 :(得分:2)

当你做git merge origin/diffraction时,你告诉Git将'origin / diffraction'合并到你当前的分支中。你想要的是告诉Git根据'origin / diffraction'创建一个新的本地分支。

这是通过git checkout -b diffraction origin/diffraction完成的,甚至更简单:

git checkout diffraction

如果你想撤消你错误做的合并,你可以这样做:

git reset --hard @^

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

答案 1 :(得分: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