我开发了一些用于处理我的bibtex数据库和PDF文件的脚本。
为了方便起见,我将数据库和脚本都放在同一个git仓库中(这是我不想改变的事情)。然而,我想让我的脚本可用(例如在github上),但不想让我的数据库或pdf文件可用。尽管如此,我希望脚本在github和本地拥有相同的提交历史记录。
我考虑创建一个github分支,并仅推送此分支。但是,如何将主分支中做出的针对脚本的提交更新到该分支中呢?
还有其他方法吗?
git subtree
将scripts目录拆分为一个自己的分支(该子目录具有完整的历史记录),然后将其推送到GitHub上。你可以再次运行git subtree,使拆分的仓库保持最新状态。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是一个根分支)。所以最好从主分支获取脚本并立即提交。