我头昏脑胀,做了一些更改。我想用Git将这些更改推到这个独立的头上。我不希望我的更改进入开发分支,当然也不要进入主分支。我正在与另一个人一起处理文件。
示例分支
develop
master
*(HEAD detached at origin/49792_testMocha)
我如何在不影响开发或掌握的情况下努力奋斗?
Answers:
如果您的头部处于分离状态,并且想要推送到远程分支
git push origin HEAD:name-of-your-branch
否则,您可以创建一个新分支并推送到该分支(它将自动创建)
git branch new-branch-name
git push -u origin new-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
。🎉
HEAD:refs/features/my-new-branch
而不是使用HEAD:refs/heads/features/my-new-branch
-我没有看到新的分支。在进行一些搜索之后,我找到了一种查看方法:git ls-remote
并使用删除了它git push origin :refs/features/my-new-branch
。希望它能对其他忘记了他们的人heads/
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 2.11或更低版本使用segfault之前创建分支。
Git 2.12+(2017年第一季度)将不是这种情况
参见Kyle Meyer()的commit b10731f(2017年1月7日)。(由Junio C Hamano合并--在commit b85f79c中,2017年1月18日)kyleam
gitster
branch_get_push
:分离HEAD时不要进行段错误“
git <cmd> @{push}
”用于分离段的HEAD上;它已被纠正为错误并显示一条消息。
现在的错误将是:
HEAD does not point to a branch
为该提交创建一个新分支,并检出该分支:git checkout -b <branch-name> <commit-hash>
。现在,您可以将更改推送到新分支:git push origin <branch-name>
如果您需要从剩余的提交中清除另一个分支,请确保运行git reset --hard <branch-name>
。
这是一篇文章,说明分支头和分离头如何工作。