如何删除所有本地提交并转到分支主节点(在远程存储库上)上的最后一次提交?[复制]

How can I remove all local commits and go to the last commit on the branch master (on remote repository)? [duplicate]

提问人:Martin AJ 提问时间:4/19/2018 最后编辑:CœurMartin AJ 更新时间:2/23/2020 访问量:4055

问:

我在存储库中进行了一些更改并注册了提交(在本地)。然后我执行了这个:

$ git pull origin master

我的本地提交与拉取的提交合并。现在我后悔了。我想获取远程分支主节点上的最后一个版本,并获取本地提交(已合并)的行程。

我可以通过以下命令更改工作目录:

// the last commit on the remove branch master
$ git checkout 84acc42 .

但是,如果我对它进行一些更改并推送它,我想以前的更改仍然存在,并且也将作为提交推送。因为该提交是存在的。

请注意,这不会删除任何内容。我执行了它,但仍然看到我不想要的更改。$ git reset --hard

知道如何获取远程存储库(分支主节点)上的最新版本并删除其他所有内容吗?我可以通过删除本地工作目录并从存储库中再次克隆它来做到这一点。但我想知道是否有其他方法。

Git GitHub

评论

0赞 Abdullah Al Maruf - Tuhin 4/19/2018
您想扔掉所有更改并使其与远程分支完全相同吗?
0赞 Martin AJ 4/19/2018
@MarufTuhin是的。
0赞 Abdullah Al Maruf - Tuhin 4/19/2018
为了将来参考,stackoverflow.com/questions/1628088/...
0赞 Peter Lamberg 3/31/2020
我认为@MarufTuhin的评论所指向的问题应该被标记为这个问题是重复的问题。

答:

7赞 Abdullah Al Maruf - Tuhin 4/19/2018 #1

获取源/主节点。

git fetch --all

暂存所有更改。这样,就不会留下任何未跟踪的文件。

git add .

然后,运行命令,reset

git reset origin/master --hard

这将丢弃分支中所做的所有更改,将是 origin/master 的精确副本。

评论

0赞 Chris 4/19/2018
为什么要先改变阶段?
0赞 Martin AJ 4/19/2018
谢谢你,点赞。但我是这样做的:然后git fetch --allgit reset --hard origin/master
0赞 Abdullah Al Maruf - Tuhin 4/19/2018
@Chris Git 重置不会删除任何未暂存的新 .因此,在运行 git reset 之前,我先暂存它们。files
0赞 Mark Adelsberger 4/19/2018
因此,您似乎在说要运行以避免任何未跟踪的文件(除非与规则匹配),因为未跟踪的文件不会被删除;右?作为更直观的替代方法,您可以运行 .(最初我指定在重置后运行它,但我想无论哪种方式都可以......git add ..gitignoregit clean
0赞 Chris 4/19/2018
@MarufTuhin,git reset --hard 会重置索引和工作树。你的意思是un_tracked_文件吗?