在使用Git合并远程更改时修改开源项目

在使用Git合并远程更改时修改开源项目,git,Git,我让git克隆了MapBox ios sdk项目。我对代码做了一些丑陋的修改,但这些修改不适合作为回报。但是MapBox ios sdk最近发生了变化。如果我想将他们的最新更改合并到我的项目中,同时仍然保持我的hack,那么使用Git进行合并的最佳实践是什么?当我克隆的时候,我应该首先分支吗?或者我应该只在主分支中进行修改,只从官方源代码中进行git拉取并解决冲突,并将其保留在将来的sdk版本中吗?因为您没有首先进行分支,您最好的做法就是您所描述的:在主分支中进行修改,只需从官方来源进行git

我让git克隆了MapBox ios sdk项目。我对代码做了一些丑陋的修改,但这些修改不适合作为回报。但是MapBox ios sdk最近发生了变化。如果我想将他们的最新更改合并到我的项目中,同时仍然保持我的hack,那么使用Git进行合并的最佳实践是什么?当我克隆的时候,我应该首先分支吗?或者我应该只在主分支中进行修改,只从官方源代码中进行git拉取并解决冲突,并将其保留在将来的sdk版本中吗?

因为您没有首先进行分支,您最好的做法就是您所描述的:在主分支中进行修改,只需从官方来源进行git pull并解决冲突。

因为您没有首先进行分支,您最好的做法就是您所描述的:在主分支中进行修改,只需从官方来源获取git并解决冲突。

我将假设您的黑客行为已提交给您的本地
主分支。您可以通过执行以下操作将其移动到分支:

git branch -m master myhack
git branch myhack^ master
这将为您提供一个包含一个提交的
myhack
分支(如果有多个提交,请调整
myhack^
),以及一个与项目中的原始主文件匹配的
master
分支

此时,您可以将新代码拉入本地
master
分支,而不会产生冲突。然后,切换到您的
myhack
分支并将新主机合并到:

git checkout myhack
git merge master

我将假设您的黑客行为已提交给您的本地
主机
分支机构。您可以通过执行以下操作将其移动到分支:

git branch -m master myhack
git branch myhack^ master
这将为您提供一个包含一个提交的
myhack
分支(如果有多个提交,请调整
myhack^
),以及一个与项目中的原始主文件匹配的
master
分支

此时,您可以将新代码拉入本地
master
分支,而不会产生冲突。然后,切换到您的
myhack
分支并将新主机合并到:

git checkout myhack
git merge master

我从来没有向我当地的主分支做出过任何承诺。我只在适当的地方修改了代码。什么是字符“^”?如果有多个提交,我不确定你所说的“调整
myhack^
是什么意思。哦,如果你还没有提交任何提交,那就更容易了。执行
git checkout-b myhack
,然后在新的
myhack
分支上提交你的更改。然后按照从“此时开始”开始的说明操作。。。“至于你的其他问题,我看你对Git很陌生。符号
myhack^
表示“在
myhack
之前提交”。如果您要进行多个提交,那么还有其他用于描述早期提交的符号。请参阅友好的Git文档。是的,我没有广泛使用任何源代码管理,因此我不会搞砸提交。Git工作流也令人困惑。拥有我自己的myhack分支并在本地合并主分支,与只在本地主分支上进行黑客攻击和提交并拉入远程主分支相比,有什么优势?拥有自己的私有分支可以让您的更改与上游存储库更好地分离。没有私有分支,您的更改就没有名称,与上游更改混在一起,您的
master
分支最终与上游
master
分支不同。在Git中,分支是超轻量的,为此目的创建新分支是完全正常的。我从未对本地主分支进行过任何提交。我只在适当的地方修改了代码。什么是字符“^”?如果有多个提交,我不确定你所说的“调整
myhack^
是什么意思。哦,如果你还没有提交任何提交,那就更容易了。执行
git checkout-b myhack
,然后在新的
myhack
分支上提交你的更改。然后按照从“此时开始”开始的说明操作。。。“至于你的其他问题,我看你对Git很陌生。符号
myhack^
表示“在
myhack
之前提交”。如果您要进行多个提交,那么还有其他用于描述早期提交的符号。请参阅友好的Git文档。是的,我没有广泛使用任何源代码管理,因此我不会搞砸提交。Git工作流也令人困惑。拥有我自己的myhack分支并在本地合并主分支,与只在本地主分支上进行黑客攻击和提交并拉入远程主分支相比,有什么优势?拥有自己的私有分支可以让您的更改与上游存储库更好地分离。没有私有分支,您的更改就没有名称,与上游更改混在一起,您的
master
分支最终与上游
master
分支不同。在Git中,分支是超轻量的,为此创建新分支是完全正常的。