4

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

所以我这样做:

git fetch master
git checkout sha

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

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

4

2 回答 2

4

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

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

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


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

git cherry-pick <sha1 of commit you want to merge>
于 2013-08-13T08:47:53.530 回答
0

你可以这样做:

结帐大师

结帐你的沙

然后从现有的 sha1 中创建分支

git checkout -f masetr
git checkout SHA1
git checkout -b 'BRANCH_NAME'
于 2013-08-13T08:46:48.113 回答