我的一般做法是有两个分支:upstream
和 master
。创建你的仓库(这将让你在master
分支中开始),检入你使用的最新的上游代码,然后使用git branch upstream
创建upsteram
分支。另外,创建一个标签来指示你导入的上游版本,例如git tag wordpress-1.0
。我通常使用轻量级标签(没有任何注释,基本上只是一个指向修订版的指针)。
[wordpress-1.0] Key: [tag]
v branch
* <- upstream * commit
^- master
现在,在你还在master
分支中时,将你的更改复制并检入。现在你有两个分支:upstream
包含原始的上游源代码,而master
包含了你的更改,历史记录显示了你对upstream
所做的更改。
[wordpress-1.0]
v
* <- upstream
\
+
请在master
分支上进行所有修改。
[wordpress-1.0]
v
* <- upstream
\
+
当上游代码有新版本时,检出您的 upstream
分支 (git checkout upstream
),清除除了.git
目录之外的所有内容,并复制新的上游版本。使用 git add-A
将上游版本中的所有更改分期,提交并标记它。
[wordpress-1.0]
| [wordpress-1.1]
v v
*--* <- upstream
\
+--*--*--* <- master
现在,检查 master
分支,并将上游更改合并进来。此时,您可以选择如何合并,例如采用新的上游版本、采用您的版本或采用已合并的更改,就像在正常合并中一样。
[wordpress-1.0]
| [wordpress-1.1]
v v
*--*--------+ <- upstream
\ \
+--*--*--*--* <- master
所以,你所有的更改都在
master
上进行,所有上游版本都按原样提交到
upstream
。这将让你最容易地看到你的代码与上游版本的差异,有助于跟踪你已经合并到上游版本中的哪些更改等。
[wordpress-1.0]
| [wordpress-1.1]
| | [wordpress-2.0]
v v v
*--*--------+--*-+ <- upstream
\ \ \
+--*--*--*--*----*--* <- master
希望这可以帮到您,如果您有任何进一步的问题,请告诉我。