我开发了一些用于处理我的bibtex数据库和PDF的脚本。
为方便起见,我在同一个git存储库中管理数据库和脚本(我不想更改)。但是,我想让我的脚本可用(例如在github上),而不是我的数据库或pdf。不过,我希望在github和本地脚本上都有相同的提交历史记录。
我想过有一个github-branch并且只推动这个分支。但是,如何通过对主分支中的脚本进行提交来更新分支?
还有其他方法吗?
答案 0 :(得分:11)
您可以使用git subtree
将脚本目录拆分为他们自己的分支(具有该子目录的完整历史记录),然后您可以将其推送到GitHub。您可以再次运行git子树以使拆分存储库保持最新。
举个例子,一旦你安装了git subtree
,你可以这样做:
git subtree split --prefix script-directory --branch just-scripts
git push github-scripts just-scripts:master
...假设您的脚本位于script-directory
,而github-scripts
是一个远程,指向仅用于脚本的GitHub存储库的URL。
答案 1 :(得分:3)
但是如何通过对master分支中的脚本进行提交来更新分支?
Cherry-pick有关从master
到公共分支的脚本的提交。或者,在他们自己的分支中编辑脚本,然后在需要时将更改合并到master
。
答案 2 :(得分:2)
我按照@larsmans给出的建议,结果非常方便。 以下是该程序的更多详细信息:
## getting the scripts into a separate branch for github
# create a root branch 'scripts'
git symbolic-ref HEAD refs/heads/scripts
rm .git/index
git clean -fdx # WARNING: all non-commited files, checked in or not, are lost!
git checkout master script1.py script2.py
git commit -a -m "got the original scripts"
git checkout master
git merge scripts
# push the scripts branch to github
$ git remote add github git@github.com:username/repo.git
$ git push github scripts
现在我可以在scripts-branch中进行开发,并在我需要数据库的时候与master分支合并。
一个警告:在两个分支中添加新文件后的第一个合并将导致冲突(因为scripts-branch是根分支)。所以最好从master分支获取脚本并立即提交它们。