在拉动之前存储/提交不丢失本地文件

时间:2015-10-28 12:04:15

标签: git github git-pull

如果远程和本地存储库都有变化,我在使用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的文档,但我无法实现这一点。

谢谢,

2 个答案:

答案 0 :(得分:2)

让我们假设您正在my_branch上工作,并在那里进行了一些更改。现在你的同事推送到主人,你需要更新你的:

git stash
git checkout master
git pull

您的master已与更改同步。

现在您要继续处理my_branch,以便

git checkout my_branch

现在您应stash pop进行更改:

git stash pop

如果未检测到冲突,则合并将自动生效。否则,您将被要求解决它们。

答案 1 :(得分:0)

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

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”分支上,以防你决定要回来(或者想稍后查看它或者将它与你更新的分支区分开来)。