将master重置为HEAD ^而不是HEAD并提交,如何恢复?

时间:2019-07-19 01:36:30

标签: git git-reset

这是我执行任何操作之前本地分支的状态:

B <-A ...

这是遥控器:

B <-A ...

我在存储库上运行git add -A,发现它花费的时间太长。原来,我没有忽略带有大型开发工件的目录v3。因此,我运行git reset HEAD^来使索引看起来像运行add之前的样子,然后将v3目录添加到.gitignore中,再次运行add并提交了更改(称为提交C)。

当我尝试将东西推到远程时,Git开始抱怨。结果是在运行reset HEAD^却还没有做任何事情的情况下,我跳回了很远的历史,本地分支如下所示:

C <-A ...

这会造成一个冲突,其中远程拥有B而本地没有。我必须运行的正确命令是git reset HEAD。我该如何解决?

2 个答案:

答案 0 :(得分:1)

  

所以我运行了git reset HEAD ^以使索引看起来像在运行add之前一样

应该是git resetgit reset HEAD的缩写)

尝试git reflog来查看HEAD在git重置之前是什么,然后git重置为该提交。
首先保存您的工作,以防万一这些命令无法按预期运行。

答案 1 :(得分:0)

您只需要将更改重新部署到远程分支上即可。

假设您正在使用远程var plans = await graphServiceClient .Me .Planner .Plans .Request() .GetAsync(); foreach (var plan in plans) { Console.WriteLine($"{plan.Title} ({plan.Id})"); var tasks = await graphServiceClient .Planner .Plans[plan.Id] .Tasks .Request() .GetAsync(); foreach (var task in tasks) { Console.WriteLine($"{task.Title} ({task.Id})"); } } master上工作,只需执行以下操作:

origin/master

并且它将C移到B之后而不是A之后。