2017-04-04 106 views
0

操作系统:ubuntu 16Git如何更新本地存储库并保留我的更改

我使用git clone来复制远程存储库到我的本地机器。 我做了一些改变(通过纳米)在一些代码可以说5-10个文件(存储库有2000多个文件,我认为)。

但现在这个存储库得到了一些不错的更新。我想获得所有这些更新,但我想保留我的自定义更改。我不能承诺这个存储库,因为我相信我的代码和修复是“坏”,并不完美。

我应该使用哪个命令来获取所有更新并将更改保留在文件中?

回答

1

最简单的方式(如果你正在使用的分支上要更新):

git stash 
git pull 
git stash pop 

另一种选择是创建另一个分支,以保持您的更改:

git checkout -b my-new-branch 
git add . 
git commit -m "my changes" 
git pull --rebase origin master # this will get the updates and place your changes on top of it 

在展台方法你可能会发生冲突,解决它们你可以使用:

git mergetool 
+0

谢谢,我做了“git stash git pull git stash pop”看起来像它可以完美地在小的版本库上进行“小”更改。 – Amaroc

3

一种选择是藏匿您的工作目录(以及可能的阶段),拉的更改,然后再应用已藏匿:

git stash 
git pull origin master # or whatever the branch name is 
git stash apply 

这应该离开你大概你在之前的状态拉动新的变化。我说“粗略”,因为应用隐藏可能会导致合并冲突。如果您所做的更改与上次同步后对回购所做的更改发生冲突,则此类冲突可能无法避免。

如果您担心失去您的工作,那么我会建议在您的更改中创建一个支行。为此,您可以尝试:

git stash 
git checkout -b safe_branch 
git stash apply 
git commit -m 'my work' 

然后,您可以尝试合并或重新绑定原始远程分支上的此分支。假设你想合并,你可以尝试:

git fetch origin 
git checkout safe_branch 
git merge master  # or whatever the remote branch is called 

现在你有一个真正的提交包含你的工作分支。在这个更安全的设置中失去你的工作真的很难。

+0

谢谢,我想试试看,我可以使cp -R localrepo localrepotest并在那里做这个指令? – Amaroc

+0

当创建一个像这样的新分支时,不需要使用'git stash',这些更改会自动转移到新分支。 – 1615903

+0

@ 1615903习惯的力量,我似乎回想起早期版本的Git不允许这样做。是的,你是对的。 –

相关问题