从分离的头部进行 Git 推动
Making a Git push from a detached head
我是超然的,做了一些改变。我想用 Git 将这些更改推到这个分离的头上。我不希望我的更改进入 develop 分支,当然也不希望在 master 分支上。我正在与另一个人一起处理一个文件。
示例分支
develop
master
*(HEAD detached at origin/49792_testMocha)
如何在不影响 develop 或 master 的情况下推入 head?
使用 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
这将检出指向所需提交的新分支。
此命令将检出给定的提交。
此时你可以创建一个分支,从这里开始工作。
# 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
注意:在 pushing之前创建一个分支更推荐git 2.11或更低版本用于段错误!
Git 2.12+(2017 年第一季度)
不会出现这种情况
见commit b10731f (07 Jan 2017) by Kyle Meyer (kyleam
)。
(由 Junio C Hamano -- gitster
-- in commit b85f79c 合并,2017 年 1 月 18 日)
branch_get_push
: do not segfault when HEAD is detached
"git <cmd> @{push}
" on a detached HEAD used to segfault; it has
been corrected to error out with a message.
现在的错误是:
HEAD does not point to a branch
使用 Git 2.12 或更高版本,您可以将分离的 HEAD 推送到远程分支,如 Matt's .
所示
为该提交创建一个新分支并检出它:git checkout -b <branch-name> <commit-hash>
。现在您可以将更改推送到新分支:git push origin <branch-name>
如果您需要从剩余的提交中清理其他分支,请务必 运行 git reset --hard <branch-name>
.
这是一篇解释 branching and detached head 工作原理的文章。
虽然这里的所有答案都在某种程度上回答了原始问题(如何在不影响其他分支的情况下从分离的头部推送),但都建议创建一个新分支。
以下是如何推送到新的远程分支而不创建新的本地分支:
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 通常意味着您检出的分支没有最新的提交。所以,基本上你需要调整你当前分支的 HEAD 到最新的提交。
通常有两种方法。
如果你想使用相同的分支 - 你可以使用:
git 推送原点 HEAD: < remote-branch >
您可以创建一个新分支,将您的代码推送到该分支(这也会拉取您分离的代码)。
git checkout -b
git 提交。
git推
我是超然的,做了一些改变。我想用 Git 将这些更改推到这个分离的头上。我不希望我的更改进入 develop 分支,当然也不希望在 master 分支上。我正在与另一个人一起处理一个文件。
示例分支
develop
master
*(HEAD detached at origin/49792_testMocha)
如何在不影响 develop 或 master 的情况下推入 head?
使用 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
这将检出指向所需提交的新分支。
此命令将检出给定的提交。
此时你可以创建一个分支,从这里开始工作。
# 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
注意:在 pushing之前创建一个分支更推荐git 2.11或更低版本用于段错误!
Git 2.12+(2017 年第一季度)
不会出现这种情况见commit b10731f (07 Jan 2017) by Kyle Meyer (kyleam
)。
(由 Junio C Hamano -- gitster
-- in commit b85f79c 合并,2017 年 1 月 18 日)
branch_get_push
: do not segfault when HEAD is detached"
git <cmd> @{push}
" on a detached HEAD used to segfault; it has been corrected to error out with a message.
现在的错误是:
HEAD does not point to a branch
使用 Git 2.12 或更高版本,您可以将分离的 HEAD 推送到远程分支,如 Matt's
为该提交创建一个新分支并检出它:git checkout -b <branch-name> <commit-hash>
。现在您可以将更改推送到新分支:git push origin <branch-name>
如果您需要从剩余的提交中清理其他分支,请务必 运行 git reset --hard <branch-name>
.
这是一篇解释 branching and detached head 工作原理的文章。
虽然这里的所有答案都在某种程度上回答了原始问题(如何在不影响其他分支的情况下从分离的头部推送),但都建议创建一个新分支。
以下是如何推送到新的远程分支而不创建新的本地分支:
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 通常意味着您检出的分支没有最新的提交。所以,基本上你需要调整你当前分支的 HEAD 到最新的提交。
通常有两种方法。
如果你想使用相同的分支 - 你可以使用:
git 推送原点 HEAD: < remote-branch >
您可以创建一个新分支,将您的代码推送到该分支(这也会拉取您分离的代码)。
git checkout -b
git 提交。 git推