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" 中,以防您决定要收回它(或者想稍后查看它或将其与更新后的分支进行比较)。
如果远程和本地存储库都有更改,我无法将我的本地存储库与 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" 中,以防您决定要收回它(或者想稍后查看它或将其与更新后的分支进行比较)。