我自己正在开发一个 git 存储库(所以是的,我知道这样做的含义和警告),并且不知何故,其中一棵树在不应该被推送后得到了提交。
现在我正试图撤退,它抱怨数百个合并冲突。
有没有办法告诉 git强制覆盖本地来自远程服务器的所有文件?有没有比做git reset --hard HEAD~1
然后做拉更快的方法?
同样,有没有办法通过简单的合并来做同样的事情?我所看到的一切都建议在合并冲突解决阶段检查每个文件,但是对于数百个文件,手动这样做是不可能的。
有三种简单的解决方案可以复制远程存储库中的最后一个版本,丢弃您在本地所做的所有更改:
丢弃您的存储库并再次克隆。这是最简单的解决方案,但是如果您的存储库很大,则可能需要很长时间,并且可能需要额外的努力,例如重新configure
编译等。
丢弃本地更改,git reset --hard <hash>
然后执行git pull
. 问题是您需要首先找到在您试图避免的任何更改历史之前的提交。重置为该提交哈希后,执行git pull
.
执行 agit fetch
将更新带到远程分支的本地引用(通常是 origin/master),然后执行git reset --hard
传递此引用,即git reset --hard origin/master
.
git reset --hard {remote_repository_name}/{branch_name}
例子:
git reset --hard upstream/branch1
如果您正在使用分支,则可以使用上面的代码。但在此之前,您必须将(上游或源)设置为本地存储库,
git remote add upstream https://github.com/lakini/example.git
这里,https://github.com/lakini/example.git是远程上游存储库。
与此相同,我们也可以在远程存储库(源)中工作。
git reset --hard origin/branch1