如何在分别改变远程和本地之后结合变化

时间:2015-05-02 05:26:47

标签: git

我远程更改了我的Github项目中的一些文件(添加了自述文件)。但是,然后我在我的计算机上本地更改了其他文件(不是README),这些文件没有README文件。结合变化的最佳方法是什么? git如何知道要保留哪些更改 - 来自远程和本地?

欣赏任何建议!谢谢。

3 个答案:

答案 0 :(得分:1)

您描述的是正常的git工作流程。这与其他开发人员推动更改的情况相同 - 您有远程更改,并且您希望将更改集成在它们之上。 E.g。

您的存储库看起来像这样

 A----B----C-----D
           ^     ^
           |     master
           |
           origin/master

遥控器看起来像这样

 A----B----C-----E
                 ^
                 master

获取远程更改git fetch,您的本地内容将如下所示

 A----B----C-----D
            \    ^
             \   master
              \
               E
               ^
               origin/master

您通常希望在D之上将您的更改集成在提交E中。使用git rebase origin/master。您不应该有冲突,因为您说您触及ED中的不同文件。在rebase之后,您的本地存储库如下所示:

 A----B----C-----E----D
                 ^    ^
                 |     master
                 |
                 origin/master

现在,您可以将本地更改推送到远程存储库git push

简短的方法是使用

git pull --rebase
git push

修改

  

如果在E和D中触摸了相同的文件怎么办?我没有这样做,但是如何解决冲突?

如果git rebase检测到无法解决的冲突,它会暂停并告诉您手动解决冲突。执行git status以查看冲突的位置,解决冲突并通过暂存冲突来标记它们(git add)。解决所有冲突后,您可以使用git rebase --continue继续使用rebase。有关详细信息,请查看http://git-scm.com/docs/git-rebase

  

合并失败可能会阻止此过程完全自动化。您将必须解决任何此类合并失败并运行git rebase --continue。另一个选择是绕过导致合并失败的提交与git rebase --skip。要查看原始文件并删除.git / rebase-apply工作文件,请使用命令git rebase --abort。

答案 1 :(得分:0)

您希望在本地存储库中执行git pull以使所有内容与遥控器保持同步。

git pull

这样做是从远程存储库中获取任何更改,并将它们合并到当前的本地分支中。*

*:您当前所在的分支机构,而不是任何其他分支机构。

答案 2 :(得分:0)

从本地计算机阶段

1_进行更改:

$ git add -A

$ git commit -m“您的更改说明”

此命令将所有已修改或新文件分阶段并在本地提交。

2 _然后:$ git pull

所以你带来了最新的变化,如果需要,git会自动合并。

3 _最后将所有更改推送到远程存储库: $ git push

希望它有所帮助。