我对git非常陌生,所以如果明显(或不可能),请原谅我!将变更合并为git repo,就好像它们发生在过去一样
我正在将它用于CMS网站。我经常遇到这种情况,即对已更新的第三方组件进行了修改。
如何添加更新组件中的更改,就好像它们在更改之前发生了一样?或者这是“重写历史”?
是否从引入组件的旧提交创建分支,添加更新的代码,然后合并到主?子模块?还是我吠叫了错误的树,这种情况更好地以另一种方式处理?
我对git非常陌生,所以如果明显(或不可能),请原谅我!将变更合并为git repo,就好像它们发生在过去一样
我正在将它用于CMS网站。我经常遇到这种情况,即对已更新的第三方组件进行了修改。
如何添加更新组件中的更改,就好像它们在更改之前发生了一样?或者这是“重写历史”?
是否从引入组件的旧提交创建分支,添加更新的代码,然后合并到主?子模块?还是我吠叫了错误的树,这种情况更好地以另一种方式处理?
(原来这个回答假设的第三方组件从公共的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
一个简单的命令你,git pull --rebase
BR, 添
你能解释一下吗? – 2012-05-13 13:24:43
将这项工作如果我已经对主人做了些调整 即。回到光源被添加到存储库并创建分支来保存更新的时候? – 2012-04-24 10:30:24
我仍然不清楚如何做到相反。 shinything是一个在版本控制下不可用的组件。它是一个更大的项目的一部分,我会定期下载一个新版本,并且在我调整之前需要添加新版本的更改。 – 2012-05-13 13:23:13