永久继续以前提交的工作



我签出了以前的提交,使用 git checkout ,我进行了更改并提交了它们。但是,当我做 git 状态时,它说 HEAD 已从 .如何提交我已经签出了我想要继续前进的提交?

让我们一步一步地看一下情况。最初你是一个分支的负责人,假设它是master

--A--B--C
^ master
HEAD

我使用 git 签出签出了以前的提交

git checkout HEAD~

现在你在这里:

--A--B--C
^  ^ master
HEAD

这种情况称为"分离的 HEAD",因为HEAD(当前指针(不在任何分支的头部。

我进行了更改,并提交了更改。

现在你在这里:

--D < HEAD
/
--A--B--C
^ master

你现在想做什么?是否要将提交C放在master的头部,并将master移动到HEAD所在的位置(以D(?还是要将提交D移动到master(保留C(?

第一个任务可以使用以下命令解决:

git branch tmp-master # create a new branch
tmp-master
v
--D < HEAD
/
--A--B--C
^ master
git checkout master
tmp-master
v
--D
/
--A--B--C < HEAD
^ master
git reset --hard tmp-master # move the branch
git branch -D tmp-master # remove the temporary branch
master
v HEAD
--D
/
--A--B--C

或者,要简化新的master分支:

--A--B--D

C

提交C成为悬而未决的提交,迟早会被垃圾回收器删除。

但是如果你想做第二个任务(同时保留CD(,步骤有点不同:

git branch tmp-master # create a new branch
tmp-master
v
--D < HEAD
/
--A--B--C
^ master
git checkout master
tmp-master
v
--D
/
--A--B--C < HEAD
^ master
git cherry-pick tmp-master
git branch -D tmp-master # remove the temporary branch
--A--B--C--D' < HEAD
^ master

只需重置为该提交。

git reset --hard <commit_id>

使用 -f 将其推送到远程,以便删除历史记录。

如果您的分支名为 b1:

git push -f origin b1

然后删除本地分支并再次签出远程分支。一切就绪。

相关内容

  • 没有找到相关文章

最新更新