Stash / Commit before Pull 不丢失本地文件

Stash / Commit before Pull Not to Lose Local Files

如果远程和本地存储库都有更改,我无法将我的本地存储库与 GitHub 上的远程存储库同步。因此,例如,如果我还没有开始处理某个功能,在开始之前我可以简单地通过 运行

进行同步
git pull origin master

这很简单。但是,当我在本地处理一项功能时,假设我的同事将新功能推送到远程,因此远程也发生了变化。我尝试在拉取之前完成与提交和存储的同步。所以那些代码,

git add .
git commit -m "message"
git pull origin master

git stash save "message"
git pull origin master
git stash pop

这两种方法最终都覆盖了我的本地更改,因此它没有将远程更改放在本地主分支的顶部,而是覆盖了我的本地文件并且本地更改消失了。

我做错了什么?我指的是许多关于 git 的文档,但我就是做不到。

谢谢,

假设您正在处理 my_branch,并在那里进行了一些更改。现在你的同事推送给 master,你需要更新你的:

git stash
git checkout master
git pull

您的 master 已与更改同步。

现在您想继续my_branch,所以您

git checkout my_branch

现在您应该 stash pop 更改:

git stash pop

如果没有检测到冲突,合并将自动进行。否则,系统会要求您解决这些问题。

将您的分支设置为与远程分支完全匹配可以分两步完成:

git fetch origin
git reset --hard origin/master

如果你想在执行此操作之前保存当前分支的更改,你可以这样做:

git commit -a -m "Saving my work, for later use"
git branch my-saved-work

现在您的工作已保存在分支 "my-saved-work" 中,以防您决定要收回它(或者想稍后查看它或将其与更新后的分支进行比较)。