从分离的头部进行 Git 推

我是一个超然的人,做了一些改变。我想推动这些改变,这个与 Git 分离的头部。我不希望我的更改发生在开发分支上,当然也不希望发生在主分支上。我在和另一个人一起处理文件。

树枝的例子

   develop
master
*(HEAD detached at origin/49792_testMocha)

如何在不影响发展或掌握的情况下进入大脑?

139371 次浏览

使用 git checkout -b BRANCH_NAME创建一个新分支

然后将新分支推到远程: git push origin BRANCH_NAME


git checkout

git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x is the number of commits t go back

这将签出指向所需提交的新分支。
此命令将签出到给定的提交。
At this point you can create a branch and start to work from this point on.

# Checkout a given commit.
# Doing so will result in a `detached HEAD` which mean that the `HEAD`
# is not pointing to the latest so you will need to checkout branch
#in order to be able to update the code.
git checkout <commit-id>


# create a new branch forked to the given commit
git checkout -b <branch name>

如果您在一个分离的头上,并且您想要推到您的远程分支

git push origin HEAD:name-of-your-branch

否则,您可以创建一个新的分支并推送到它(它将自动创建)

git branch new-branch-name
git push -u origin new-branch-name

注意: 使用分支 之前推送更推荐 git2.11或更少用于 Segfault!

Git 2.12 + (2017年第一季度)不会出现这种情况

提交 b10731f(2017年1月7日) by 凯尔 · 迈耶(kyleam)
(由 朱尼奥 · C · 哈马诺 gitster于2017年1月18日在 提交 b85f79c合并)

branch_get_push: 当 HEAD 被分离时不要分段

git <cmd> @{push}”在用于分段的分离的 HEAD 上; 被更正为错误与消息。

The error now will be:

HEAD does not point to a branch

使用 Git 2.12或更高版本,然后可以将分离的 HEAD 推送到远程分支,如 马特answer所示。

为该提交创建一个新分支,并对其进行签出: git checkout -b <branch-name> <commit-hash>。现在可以将更改推送到新的分支: git push origin <branch-name>

如果您需要清理剩余提交的其他分支,请确保运行 git reset --hard <branch-name>

下面是一篇解释 分枝分离头如何工作的文章。

虽然这里所有的答案基本上都回答了最初的问题(如何在不影响其他分支的情况下从一个分离的头部推动) ,但所有的答案都建议创建一个新的分支。

下面是如何推送到一个新的远程分支 没有,从而创建一个新的本地分支:

git checkout --detach # (or anything else that leaves you with a detached HEAD - guillotine anyone?)
[change stuff & commit]
git push origin HEAD:refs/heads/my-new-branch

origin替换为适当的远程名称(您可以对其进行写访问) ,将 my-new-branch替换为您希望调用的任何新分支。

您在 HEAD上的提交将被推送到一个名为 my-new-branch的新分支。

Detached head usually means that the branch you checkout to does not has the latest commit. So, basically you need to adjust the HEAD of your current branch to the latest commit.

通常有两种方法。

  1. 如果你想使用相同的分支,你可以使用:

    git push origin HEAD:< remote-branch >

  2. 您可以创建一个新的分支,将您的代码推送到该分支(这也将拉取您的分离代码)。

    git checkout -b < branch-name > < base-branch >
git commit .
git push