Git:将分支的尖端设置为特定的提交
假设一个分支名为my branch,有三个提交,如下所示:Git:将分支的尖端设置为特定的提交,git,branch,Git,Branch,假设一个分支名为my branch,有三个提交,如下所示: aaa bbb ccc 首先,我的分支的顶端指向aaa。如果一个人做了git重置--hard HEAD ^提示将开始指向bbb。同一命令将导致我的分支的尖端指向ccc。如何在aaa或bbb处再次点小费 一个选项是签出aaa或bbb(分离头部),然后签出新分支,比如说新分支,删除我的分支,然后使用新分支。我还假设像git branch-f my branch bbb这样的东西应该可以工作,但是当我尝试这个时,我得到了 fatal: Ca
aaa
bbb
ccc
首先,我的分支的顶端指向aaa。如果一个人做了git重置--hard HEAD ^提示将开始指向bbb。同一命令将导致我的分支的尖端指向ccc。如何在aaa或bbb处再次点小费
一个选项是签出aaa或bbb(分离头部),然后签出新分支,比如说新分支,删除我的分支,然后使用新分支。我还假设像git branch-f my branch bbb
这样的东西应该可以工作,但是当我尝试这个时,我得到了
fatal: Cannot force update the current branch.
还有其他想法吗?如果这些提交存在于另一个分支中,比如master,您可以使用git merge将其返回到我的分支 要使用hash bbb将提交还原到我的分支上,请使用
如果这些提交不再存在于您的分支中,您必须使用。如果这些提交存在于另一个分支中,比如master,您可以使用git merge将其返回到我的分支 要使用hash bbb将提交还原到我的分支上,请使用
如果这些提交不再存在于分支中,则必须使用。可以使用基于日期的sha1表达式(如“branchname@{Dayed})将分支的尖端设置为特定的提交 例如,git checkout testbranch@{昨天}
但是,这将导致分离头状态,正如您已经提到的。您可以使用基于日期的sha1表达式(如“branchname@{Dayed})将分支的尖端设置为特定的提交 例如,git checkout testbranch@{昨天}
但是,这将导致分离的头部状态,正如您已经提到的。您可以运行
git reset--hard
重新调整当前分支。如果需要,使用reflog查找ID,或者更简单,如果reflog说这是(比如说)HEAD{2}
,只需git reset--hard HEAD{2}
(注意,每个git reset
在{n}
中重新编号n
)
如果合并是快进合并,中的git merge
方法也可以正常工作。(如果你选错了一个,你会得到一个真正的合并,如果你想要的话,这是可以的,或者你可以git reset--hard HEAD^
撤销它,如果没有的话。)同样,你可以给出原始的SHA-1或reflog名称。作为额外的奖励:
git合并--仅限ff id
只会“向前滑动分支名称”(朝向新提示,如
aaa
或bbb
),永远不会进行“常规”合并,因此这是确保使用适当ID的好方法。您可以运行git reset--hard
重新调整当前分支。如果需要,使用reflog查找ID,或者更简单,如果reflog说这是(比如说)HEAD{2}
,只需git reset--hard HEAD{2}
(注意,每个git reset
在{n}
中重新编号n
)
如果合并是快进合并,中的git merge
方法也可以正常工作。(如果你选错了一个,你会得到一个真正的合并,如果你想要的话,这是可以的,或者你可以git reset--hard HEAD^
撤销它,如果没有的话。)同样,你可以给出原始的SHA-1或reflog名称。作为额外的奖励:
git合并--仅限ff id
只会“向前滑动分支名称”(指向新提示,如
aaa
或bbb
),永远不会进行“常规”合并,因此这是确保使用适当ID的好方法。首先,您必须签出bbb以避免出现“致命:无法强制更新当前分支”消息。然后您可以使用分支-f将头部更改为bbb。最后,到这家分店结账,否则你就处于一种超然的状态
因此,请执行以下操作:
git co bbb
git branch -f my-branch bbb
git co my-branch
首先,您必须签出bbb以避免出现“致命:无法强制更新当前分支”消息。然后您可以使用分支-f将头部更改为bbb。最后,到这家分店结账,否则你就处于一种超然的状态 因此,请执行以下操作:
git co bbb
git branch -f my-branch bbb
git co my-branch
您可以使用“-B”选项进行签出,而不是签出新分支以避免分离头状态。git checkout-B TestBranch不是签出一个新的分支,而是为了避免分离的头部状态,您可以使用-B选项进行签出。git签出-B testbranch
Before: After:
>aaa aaa
bbb >bbb
ccc ccc