提问人:Martin AJ 提问时间:4/19/2018 最后编辑:CœurMartin AJ 更新时间:2/23/2020 访问量:4055
如何删除所有本地提交并转到分支主节点(在远程存储库上)上的最后一次提交?[复制]
How can I remove all local commits and go to the last commit on the branch master (on remote repository)? [duplicate]
问:
我在存储库中进行了一些更改并注册了提交(在本地)。然后我执行了这个:
$ git pull origin master
我的本地提交与拉取的提交合并。现在我后悔了。我想获取远程分支主节点上的最后一个版本,并获取本地提交(已合并)的行程。
我可以通过以下命令更改工作目录:
// the last commit on the remove branch master
$ git checkout 84acc42 .
但是,如果我对它进行一些更改并推送它,我想以前的更改仍然存在,并且也将作为提交推送。因为该提交是存在的。
请注意,这不会删除任何内容。我执行了它,但仍然看到我不想要的更改。$ git reset --hard
知道如何获取远程存储库(分支主节点)上的最新版本并删除其他所有内容吗?我可以通过删除本地工作目录并从存储库中再次克隆它来做到这一点。但我想知道是否有其他方法。
答:
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 --all
git 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 .
.gitignore
git clean
0赞
Chris
4/19/2018
@MarufTuhin,git reset --hard
会重置索引和工作树。你的意思是un_tracked_文件吗?
评论