我读过关于这个主题的类似帖子,但我不知道如何正确地做到这一点。
我签入了大约1000个我不想要的文件,我宁愿不需要逐个检查并将它们全部从回购中删除。
我有一个远程主分支。
我有本地主分支。
他们都在同一个修订。
我想回滚我的远程1提交。
我的历史是A- B- C- D- E。
我想回滚我的本地到D。
然后把它推到远程,所以我的当前哈希将是D远程和本地。
我做这个有问题。
我正在使用Git Tower,但对命令行很熟悉。任何帮助吗?
更新:
下面的评论很棒。使用重置似乎在一定程度上是不鼓励的,特别是当存储库与其他用户共享时。
在不使用硬重置的情况下撤销之前提交的更改的最佳方法是什么?有办法吗?
这是更安全的更新版本。
git reset --hard HEAD^
git push --force-with-lease
Git push -f将不加区别地用您自己的更改替换远程存储库。如果是其他人推动了变革,他们就会迷失。Git push——force-with-lease只会在存储库符合你的预期时才会推送你的rebase。如果别人已经推动了你的努力,你的努力就会失败。
见-被认为有害的力量;理解git的-force-with-lease。
我建议将其别名为repush = push—force-with-lease。
如果已经有人收回了呢?那我该怎么办?
告诉他们git pull -rebase=merges。不是git fetch origin和git merge origin/master,而是git fetch origin和git rebase -r origin/master。这将在新的重基origin/master之上重写它们的任何本地更改为master。-r将保留它们所做的任何合并。
我建议将此设置为拖动的默认行为。它是安全的,将处理其他的重基,并导致较少不必要的合并。
[pull]
rebase = merges
这是更安全的更新版本。
git reset --hard HEAD^
git push --force-with-lease
Git push -f将不加区别地用您自己的更改替换远程存储库。如果是其他人推动了变革,他们就会迷失。Git push——force-with-lease只会在存储库符合你的预期时才会推送你的rebase。如果别人已经推动了你的努力,你的努力就会失败。
见-被认为有害的力量;理解git的-force-with-lease。
我建议将其别名为repush = push—force-with-lease。
如果已经有人收回了呢?那我该怎么办?
告诉他们git pull -rebase=merges。不是git fetch origin和git merge origin/master,而是git fetch origin和git rebase -r origin/master。这将在新的重基origin/master之上重写它们的任何本地更改为master。-r将保留它们所做的任何合并。
我建议将此设置为拖动的默认行为。它是安全的,将处理其他的重基,并导致较少不必要的合并。
[pull]
rebase = merges