无法重置为分支?

时间:2017-09-18 03:04:01

标签: git

有时我使用git reset。通常是要撤消'一个或多个提交。例如,如果我想从2年前回到我的提交状态,我git reset HEAD~2。保留暂存区/索引中从HEAD~2HEAD的所有更改。

目前我有相当数量的提交,自从branchA分支后我添加了~15。现在branchB我要做的就是将其重置为branchA,并将所有更改保留为branchA - >临时区域branchB。我基本上想以一种新的方式重新添加和提交这些更改。

git reset似乎将提交作为参数,即git reset HEAD。因此,如果我执行git reset HEAD^,那么自一次提交以来我所做的所有更改都将在暂存区域中显示已修改/更改。那么为什么然后赢得git reset branchA只是让我的分支~15次提交?在这种情况下,分支不能用作提交的替代吗?

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找软复位:

git reset --soft branchA     # or
git reset --soft <SHA-1>

其中<SHA-1>branchA的HEAD提交的哈希值。

此软复位会将branchB的HEAD指针移回同一分支中的branchA的HEAD提交。但是,它不会触及branchB的阶段或工作目录。换句话说,branchAbranchB之间的差异变化将在阶段中,您可以根据需要再次提交它们。

请注意,这是压缩一系列提交的一种方法。实现你想要的东西的另一种方法是交互式rebase,然而这将是更多的工作。

<强>更新

错误fatal: ambiguous argument 'branchA': both revision and filename表示除了名为branchA的分支外,还有名为branchA的文件夹或文件。要告诉Git使用分支而不是文件/文件夹,请使用以下命令:

git reset --soft branchA --