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

rub*_*bik 4 git commit head

我有一个本地存储库,我想将其快进到特定提交(可能不是远程存储库的 HEAD)。

所以我这样做:

git fetch master
git checkout sha
Run Code Online (Sandbox Code Playgroud)

然而,这使我处于分离的 HEAD 状态,这是我不想要的。是否有相当于git checkout -b branch_name sha, 当branch_name 已经存在时起作用?

简而言之,我必须将本地存储库的 HEAD 更新为远程提交。我已经尝试过git pull origin sha但没有成功。我无法使用git pull origin master,因为它将快进到远程的 HEAD,而我想快进到特定的提交。

kni*_*ttl 5

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

git fetch origin
git merge <sha1 of commit you want to merge>
Run Code Online (Sandbox Code Playgroud)

您可以指定该--ff-only选项,并让 Git 在无法快进时失败(并且会创建新的合并提交)。


如果您只想在当前分支的提示之上放置一个提交,请使用cherry-pick(但通常不推荐这样做):

git cherry-pick <sha1 of commit you want to merge>
Run Code Online (Sandbox Code Playgroud)