我是git的新手。我所做的是fork一些我感兴趣的存储库,然后将它们克隆到我的电脑上进行操作。
一些原始项目可能会在我操作本地副本之前显着更新,或者我可能会进行一些微不足道的更改。
据我所知,我可以“rebase”我的克隆以“pull”原始项目中的更改。
那对我的更改有什么影响?例如,假设有一个名为DoSomething.cpp
的文件来自原始项目。我修改了它,可能修复了一个小bug或添加了一个功能。现在! 1年后,原始项目已经经历了许多修订,变得更好了。我想将这些更改“pull”到我的克隆中,但仍然保留我的更改!(所以这有点像推送的反向)
这很容易做到吗?如果可以,基本思路是什么?
我希望我的克隆中的任何更改(我已更改的内容)不会被覆盖,但我实际上可以将我的更改与原始代码(在我的fork上)合并,并有能力检查和接受更改。 (例如,如果在原始代码中更改了DoSomething.cpp
,则需要比较更改以确保它们兼容)。
我猜这不难,因为我是fork的所有者,我可以重新设置或硬重置它,然后将我的本地更改推送到我的fork?(不确定它是否有效,因为存在版本问题的巨大潜力)
git pull --rebase
会启发式地尝试合并更改;如果无法合并,它将告诉您合并失败,并要求您执行合并操作。 - Fred Foo