M.A*_*A.B 3 git pull git-stash
当我试图从origin/master中提取一些更改时,我收到此错误:
error: Your local changes to the following files would be overwritten by merge
因为我做了本地的改变.我不想提交这些更改,所以我想我应该git stash在我的分支上使用git pull origin master
我的问题是:
谢谢 !
PS:是的,我用谷歌搜索,我只是想确保我理解正确.
以下是您的回购在全部应用后的演变情况:
在您拉动之前,进行本地修改:
--*--*--*--*--*--*--A--B (<- some changes you did not commit yet)
\ ^
\ master: your latest local commit on master
\
*--*--C origin/master: the latest commit on the remote repo
Run Code Online (Sandbox Code Playgroud)之后git stash:
B <- stash: git stored local changes in its stash
/
--*--*--*--*--*--*--A <- master: the files on your disk have been restored
\ to their state in "master"
\
\
*--*--C origin/master: the latest commit on the remote repo
Run Code Online (Sandbox Code Playgroud)之后git pull:
B <- stash
/
--*--*--*--*--*--*--A--D <- master: merged remote branch in local branch
\ /
\ /
\ /
*--*--C---/
^ origin/master
Run Code Online (Sandbox Code Playgroud)git 应用拉动时通常执行的操作:合并本地分支中的远程更改.
之后git stash apply:
B <- stash
/
--*--*--*--*--*--*--A--D--B' <- modifications stored in B (not committed yet)
\ /
\ /
\ /
*--*--C----
^ origin/master
Run Code Online (Sandbox Code Playgroud)git 在新的主要提交之上重新应用存储在存储中的修改
警告是:
git pull)可能会触发一些冲突,您需要在实际到达D图中的状态之前解决这些冲突git stash apply)也可能触发一些冲突,如果您的本地更改(在开头)实际上干扰了某些修改origin/master.B'图表之前,您需要解决这些问题.如果您从服务器提取新代码,它将覆盖您的本地代码。
如果您的更改很重要,您必须提交它们,然后从服务器拉取。您将能够比较更改并正确合并它们。
do : git commit -m "Any message"thengit pull然后只有需要时 git 才会要求你解决合并冲突。
我强烈建议您使用任何基于 GUI 的 git 管理器。它会简化你的很多工作。
如果您的更改很小以至于不值得提交,您可以将本地更改放在临时位置,然后将其恢复。执行以下操作:
隐藏您的更改git stash。我会将您所有的本地更改放在临时位置。
从服务器拉git pull。您的所有更改都将被覆盖。
从 stash 带回本地更改git stash pop。它将带回本地更改。
小智 2
使用这些命令:
git stash # stash you changes
git pull : # pull
git stash pop # re-get the stashed changes, not needed if you don't want to keep your changes
Run Code Online (Sandbox Code Playgroud)