我知道如何解决这个问题:
user@host$ git pull
Updating 9386059..6e3ffde
error: Your local changes to the following files would be overwritten by merge:
foo.bar
Please, commit your changes or stash them before you can merge.
Aborting
Run Code Online (Sandbox Code Playgroud)
但是,是不是有办法让git pull
做stash
和pop
舞蹈给我吗?
如果此命令具有不同的名称,则可以.
创建shell别名git stash; git pull; git stash pop
是一种解决方案,但我寻找更好的解决方案.
我试图了解它们之间的区别
git push -f
Run Code Online (Sandbox Code Playgroud)
和
git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)
我的猜测是,如果遥控器没有本地分支没有的提交,后者只会推送到遥控器?
如果有更好的方式来表达问题,lmk,但希望它很清楚.
我用了
git reset --hard dc082bc...由于一些错误的提交,恢复到分支回到所需的先前状态.这让我当地的分公司很好.但是,我想将'origin'上的分支回滚到同一个commit,以便我可以重新开始.谁能告诉我如何将原始分支(非主人)恢复到此提交?
我已经尝试过git push origin master,但它给出了以下错误
! [rejected] branch -> branch (non-fast-forward) error: failed to push some refs to 'git@github.com:xxx/xxx.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
我读到了有关如何修改提交消息的内容.接受的答案是:
如果您已经将提交推送到远程分支,那么您需要强制推送提交
git push <remote> <branch> --force
.
这是我的理解(也来自已接受的答案)git push --force
将覆盖远程分支上的所有数据与本地数据.
为什么在更改提交消息后强制推送是必要的?如果我修改提交消息并试图在没有-f
或者推送的情况下会发生什么--force
?