Git:将分支的尖端设置为特定的提交

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

假设一个分支名为my branch,有三个提交,如下所示:

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