2012-04-11 51 views
0

我对git非常陌生,所以如果明显(或不可能),请原谅我!将变更合并为git repo,就好像它们发生在过去一样

我正在将它用于CMS网站。我经常遇到这种情况,即对已更新的第三方组件进行了修改。

如何添加更新组件中的更改,就好像它们在更改之前发生了一样?或者这是“重写历史”?

是否从引入组件的旧提交创建分支,添加更新的代码,然后合并到主?子模块?还是我吠叫了错误的树,这种情况更好地以另一种方式处理?

回答

4

(原来这个回答假设的第三方组件从公共的git回购来了,@雅各布 - 多尔曼已澄清说,他从一个大项目的快照复制组件的代码获得更新)

您需要保持与分支库:

  • master:每次你得到的组件的新快照时间,提交到这个分支
  • tweaks:一个分支基于关闭master分支,它包含了构成您的自定义调整

每次更新与组件的新快照“主”分支的提交,重订在master顶部的tweaks分支分支:

$ git rebase master tweaks 

这将使您的调整作为有效是所发生的最后一件事。

所以,从一开始起,这是它会是什么样子在命令行上...

抓住它的第一个快照&店的“主”分支

mkdir my-fork-of-shinything 
cd my-fork-of-shinything 
git init 
cp -R /tmp/shinything-snapshot-1 . # copy the snapshot of code into your repo 
git add -A // stages ALL directory contents for commit 
git commit -m "V1 snapshot of the shinything component" 

这就建立了你的'主'分支。

添加您的调整上一个新的“微调”分支

git checkout -b tweaks // creates your new branch 
... make your tweaks, commit them 

后来,当一些有趣的更新已经到原始组件制造...

抢新组件的快照,更新“主人” &“微调”分支

git checkout master 
rm -Rf * // delete the contents of the old snapshot 
cp -R /tmp/shinything-snapshot-2 . // get the brand new snapshot in place 
git add -A 
git commit -m "V2 snapshot of shinything, brings fix for #234" 

你的主分支现在有分量的更新史,提交每个快照更新。最后底垫到主分支“微调”分支 - 每个你的“微调”分支的提交将被重播,一前一后,在主分支的新尖的顶部:

git rebase master tweaks // re-bases the commits from your tweaks branch 

更多的调整?

如果你需要添加更多的调整,只是检查分支出来,并将它们添加:

git checkout tweaks 
... make your tweaks, commit them 
+0

将这项工作如果我已经对主人做了些调整 即。回到光源被添加到存储库并创建分支来保存更新的时候? – 2012-04-24 10:30:24

+0

我仍然不清楚如何做到相反。 shinything是一个在版本控制下不可用的组件。它是一个更大的项目的一部分,我会定期下载一个新版本,并且在我调整之前需要添加新版本的更改。 – 2012-05-13 13:23:13

0

一个简单的命令你,git pull --rebase

BR, 添

+0

你能解释一下吗? – 2012-05-13 13:24:43

相关问题