我远程更改了我的Github项目中的一些文件(添加了自述文件)。但是,然后我在我的计算机上本地更改了其他文件(不是README),这些文件没有README文件。结合变化的最佳方法是什么? git如何知道要保留哪些更改 - 来自远程和本地?
欣赏任何建议!谢谢。
答案 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
。您不应该有冲突,因为您说您触及E
和D
中的不同文件。在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
希望它有所帮助。