【问题标题】:Merge (no branch) into master合并(无分支)到 master
【发布时间】:2011-01-13 00:50:34
【问题描述】:
dave@dave-dev:/media/dev/belgravia$ git branch
* (no branch)
  master

我不确定这是怎么发生的,但是有没有办法可以将 no-branch 合并到 master 中。我不确定当其中一个不是分支时如何合并两个分支。无分支中的提交似乎很松散。恐怕checkout master会导致数据丢失。

【问题讨论】:

  • 就我而言,这只是在git rebase 期间发生冲突之后发生的。只需执行git rebase --continue 即可将您带回到之前所在的分支。

标签: git version-control


【解决方案1】:

使用git show 获取当前 HEAD 的 SHA1 提交 ID。有了这些信息,您就不会丢失这些提交。

然后,切换到 master 并:

git merge abc123

abc123 是第一步的 SHA1。

【讨论】:

  • 我最终做的是branch tempcheckout mastermerge temp。那将没有分支移动到实际分支中,然后我可以合并它。但是,您的解决方案更简单。
  • @Keyo:它没有将“无分支”移动到分支中。它在您当前的 HEAD(当前已签出的提交)处创建了一个分支。当 git branch 说“没有分支”时,它的意思是:你当前没有签出分支。这也称为分离的 HEAD。
  • @Jefromi 感谢您的解释。
  • 代替 git show,你也可以使用 log --graph -20 --pretty=oneline 之类的东西——只是为了获取 SHA,但对于最后 20 次提交。我认为更容易检查你在哪里出错了。
【解决方案2】:

也许你可以在当前分支(无分支)上提交它

那么你必须这样做:

git reflog

之后你可以得到这个提交的 id,比如 1d84d08

做:

git checkout master 
git merge 1d84d08

【讨论】:

    【解决方案3】:

    你有(没有分支)的原因是你已经完成了:

    git checkout REMOTE_BRANCH_NAME
    
    • 为了让您在该分支机构本地工作,您必须执行以下操作:git checkout -b local_branch_new_name
    • 现在做一个:git branch - a
    • 你会看到:

    local_branch_new_name

      master
    
    • 从这里你可以按照通常的方式将一个分支合并到 master 中。切换到 master 并执行:

      git 合并本地分支新名称

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 2016-04-30
      • 2016-09-20
      • 2018-04-14
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多