我开发了一些脚本来处理我的bibtex数据库和PDF。
为方便起见,我在同一个git存储库中管理数据库和脚本(这是我不想改变的事情)。但是,我想使我的脚本可用(例如在github上),而不是我的数据库或pdf。不过,我希望在github和本地脚本上都有相同的commit-history。
我想过有一个github-branch并且只推动这个分支。但是,如何通过对主分支中的脚本执行提交来更新分支?
有没有其他方法可以做到这一点?
我开发了一些脚本来处理我的bibtex数据库和PDF。
为方便起见,我在同一个git存储库中管理数据库和脚本(这是我不想改变的事情)。但是,我想使我的脚本可用(例如在github上),而不是我的数据库或pdf。不过,我希望在github和本地脚本上都有相同的commit-history。
我想过有一个github-branch并且只推动这个分支。但是,如何通过对主分支中的脚本执行提交来更新分支?
有没有其他方法可以做到这一点?
但是,如何通过对主分支中的脚本执行提交来更新分支?
摘樱桃 与脚本有关的提交 master
进入公共部门。或者,在自己的分支中编辑脚本,然后将更改合并到 master
什么时候需要它们。
但是,如何通过对主分支中的脚本执行提交来更新分支?
摘樱桃 与脚本有关的提交 master
进入公共部门。或者,在自己的分支中编辑脚本,然后将更改合并到 master
什么时候需要它们。
你可以用 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。
我按照@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中进行开发,并在需要数据库时与主分支合并。
需要注意的是:在两个分支中添加新文件后的第一次合并将导致冲突(因为scripts-branch是根分支)。所以最好从master分支获取脚本并立即提交它们。