Git签出提交并附加到现有分支

Git签出提交并附加到现有分支,git,commit,head,Git,Commit,Head,我有一个本地repo,我想将它快速转发到一个特定的提交(它可能不是远程repo的头) 因此,我: git fetch master git checkout sha 然而,这使我处于一种超然的状态,这是我不想要的。是否有一个与git checkout-b branch\u name sha等价的工具,当branch\u name已经存在时可以使用 简而言之,我必须将本地repo的头更新为远程提交。我已经尝试了git-pull-origin-sha,但没有成功。我无法使用git pull ori

我有一个本地repo,我想将它快速转发到一个特定的提交(它可能不是远程repo的头)

因此,我:

git fetch master
git checkout sha
然而,这使我处于一种超然的状态,这是我不想要的。是否有一个与git checkout-b branch\u name sha等价的工具,当branch\u name已经存在时可以使用

简而言之,我必须将本地repo的头更新为远程提交。我已经尝试了
git-pull-origin-sha
,但没有成功。我无法使用git pull origin master,因为这将快进到遥控器的头部,而我想快进到特定的提交。

您可以这样做:

收银台主机

签出您的sha

然后用板条箱从现有sha1分支

git checkout -f masetr
git checkout SHA1
git checkout -b 'BRANCH_NAME'

如果要合并到特定的提交,请获取所有远程更改并指定此提交的id:

git fetch origin
git merge <sha1 of commit you want to merge>

我不知道为什么,但当我使用
git pull
时,它不起作用:
致命:找不到远程引用2dcdc60153ed38b1cd971aa91d1ea9b42b5c29c7命令流意外结束
。然而,
git merge
确实如此,所以我将使用它。一个问题:在这个特定的本地repo中,我从不提交也从不更改文件,所以我认为它将始终能够快进,对吗?快进不是在文件级别发生的,而是在提交级别发生的。如果创建本地提交,则无法快进(即使它们不接触该文件)。是的,你说得对——它只允许拉命名的参考。好吧,既然在本地回购中我从不提交,我应该总是能够快进。@rubik:是的,除非你的远端强制非快进推(例如重置、重设基础、提交——修改)。不建议发布历史记录,但您永远不会知道…
git cherry-pick <sha1 of commit you want to merge>