2011-01-13 99 views
45
[email protected]:/media/dev/belgravia$ git branch 
* (no branch) 
    master 

我不知道这是怎么发生的,但有没有办法我可以合并不分支到主。我不知道如何合并两个分支,当他们中的一个不是分支时。没有分支的提交似乎是松散的。恐怕checkout master会导致数据丢失。合并(没有分支)到主

+0

在我的情况下,刚发生在`git rebase`期间发生冲突之后。只要做'git rebase - continueue',它会将你带回到之前的分支。 – Frank 2012-08-14 21:32:15

+0

也相关:http://stackoverflow.com/questions/366093/git-commit-against-tag-with-no-branch – rogerdpack 2012-12-20 22:26:09

回答

69

使用git show获取当前HEAD的SHA1提交ID。有了这些信息,你不能失去那些提交。

然后,切换到掌握和:

git merge abc123 

其中abc123是从所述第一步骤中的SHA1。

+5

我最终做的是`分支温度`,`结帐大师`,`合并温度` 。这不会将分支移入实际分支,然后我可以合并它。然而你的解决方案更简单。 – Keyo 2011-01-13 02:51:47

3

你(无分支)是你必须做的原因:你所要做的

git checkout REMOTE_BRANCH_NAME 
  • 为了让你对分支机构本地工作:git checkout -b local_branch_new_name
  • 现在做:git branch - a
  • 您将看到:

local_branch_new_na我

master 
  • 从这里你可以将分支合并到主通常的方式。切换到主做:

    混帐合并local_branch_new_name

4

也许你可以提交其对当前分支(无分支)

然后你要做的:

git reflog 

之后,你可以得到这个承诺的ID像1d84d08

做:

git checkout master 
git merge 1d84d08