0

我正在使用git我的论文。该项目包含文本文件(代码,*.tex)和二进制文件(图)。

  • 文本文件由 git 存储库跟踪
  • 二进制文件不被 git 跟踪,而是位于同一目录中。

我在台式机和笔记本电脑上工作,有时通过 ssh 同步,有时通过 USB 驱动器同步。我的问题是如何正确处理这种同步。如果我只有代码,我会使用git pull,git pushgit bundle. 问题是这将不包括二进制文件(即,我在桌面上制作的图形不会传输到笔记本电脑,因此latex笔记本电脑因缺少图形而失败)。因此,我目前rsync用于同步,但随后我失去了使用git.

我想做的事:

  • 告诉git“这里有一些二进制文件,请在执行git pushgit pull或时包含它们git bundle
  • 因为这是二进制文件,我不希望它们被跟踪,即我只希望复制当前状态,而不是更改

到目前为止,我只能提出解决方案(git为代码和rsync同步二进制文件构建一个 shell 脚本)。但这使工作变得尴尬,所以我正在寻找一个更优化的解决方案。

谢谢,西蒙

4

3 回答 3

2

我认为 git-annex 完全符合您的需要: http: //git-annex.branchable.com/

于 2012-10-04T21:12:05.877 回答
0

一种可能的解决方案是将二进制文件保存在单独的分支上(可能是孤立的使用git checkout --orphan <branchname>?)并且只使用git commit --amend. 涉及该分支的推送和拉取几乎总是必须使用--force,但它可以工作。

尽管这会在存储库中留下一些膨胀,但由于垃圾收集会存在上限,因为它不会保留二进制文件的历史记录。

于 2012-06-15T14:13:31.517 回答
0

我可能会这样组织事情:

project
   .git
   .tex files
   code files
   data symlink to ../project-data
project-data
   images, etc

这样您就可以rsync在项目数据目录上自由使用,而不必过度关注排除模式和/或损坏您的存储库,并在主项目中自由使用git fetch和 git push,而不必担心未跟踪文件的噪音。当然,您的代码和 .tex 文件需要稍作修改,以便从子目录中提取内容,而不是它们现在所在的位置。

于 2012-06-15T14:50:35.527 回答