首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Git,如何将源/主节点重置为提交?

Git,如何将源/主节点重置为提交?
EN

Stack Overflow用户
提问于 2013-07-16 10:26:11
回答 3查看 300.5K关注 0票数 291

我使用以下命令将本地主机重置为提交:

代码语言:javascript
复制
git reset --hard e3f1e37

当我输入$ git status命令时,终端显示:

代码语言:javascript
复制
# On branch master
# Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.

#   (use "git pull" to update your local branch)
#
nothing to commit, working directory clean

由于我还想重置源/报头,所以我签出到源/主:

代码语言:javascript
复制
$ git checkout origin/master
Note: checking out 'origin/master'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 2aef1de... master problem fixed for master. its okay now.

并通过以下命令重置header:

代码语言:javascript
复制
$ git reset --hard e3f1e37
HEAD is now at e3f1e37 development version code incremented for new build.

然后,我尝试将提交添加到未成功的源/标头。

代码语言:javascript
复制
$ git commit -m "Reverting to the state of the project at e3f1e37"
# HEAD detached from origin/master
nothing to commit, working directory clean

最后,我结账到我当地的主人那里。

代码语言:javascript
复制
$ git checkout master
Switched to branch 'master'
Your branch is behind 'origin/master' by 7 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

由于我重置了源/主的头部,我希望local和Since应该在同一个方向上,但是正如你所看到的,git说我的local/master比源/master落后7次提交。

如何解决此问题?我正在寻找的东西是本地/master的头和源/master指向相同的提交。下图显示了我所做的事情。谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-16 10:30:38

origin/xxx分支始终是指向远程的指针。您不能签出它们,因为它们不是指向您的本地存储库的指针(您只能签出提交。这就是为什么在命令行界面分支标记中看不到名称,只能看到提交散列的原因。

要更新remote,您需要做的是强制将本地更改推送到master:

代码语言:javascript
复制
git checkout master
git reset --hard e3f1e37
git push --force origin master
# Then to prove it (it won't print any diff)
git diff master..origin/master
票数 656
EN

Stack Overflow用户

发布于 2014-08-20 02:44:44

解决方案发现here帮助我们将master更新为已经推送的前一个提交:

代码语言:javascript
复制
git checkout master
git reset --hard e3f1e37
git push --force origin e3f1e37:master

与接受的答案的关键区别在于push命令中master之前的提交散列"e3f1e37:“。

票数 61
EN

Stack Overflow用户

发布于 2019-08-26 17:18:06

假设您的分支在这里和远程都被称为master,并且您的远程被称为origin,您可以这样做:

代码语言:javascript
复制
git reset --hard <commit-hash>
git push -f origin master

但是,如果其他任何人正在使用您的远程存储库并拉出了您的更改,则应避免执行此操作。在这种情况下,最好恢复您不想要的提交,然后正常推送。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17667023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档