如何使用Git Repo文件的子集?

时间:2013-10-01 14:10:46

标签: git text github merge bitbucket

我是版本控制的新手,但我很快发现Git是a great way to manage my collection of writings。这是一个稍微不寻常的用例,所以我有一个问题,关于Git的哪些函数最能帮助我管理“收集”的文章(即整套)和管理“选定”的文章(即集合的子集) )。

例如,我有一个包含200个.txt文件的存储库。每一首都是一首诗的文字。现在,我想留出20个这样的文件,例如,创建一个手稿。当我使用这20个文件并将它们视为一个组时,我可能会对它们进行更改。当然,我想将这些更改反映在我所有200个文件的“主”存储库中。

我见过各种方法可能对此有用,我很困惑。

  1. 我尝试的第一件事是一个充满符号链接的子文件夹。这很可爱,直到我意识到Windows上的Git不能很好地处理符号链接。
  2. a branch can handle this in a nice way, with help from merge --strategy ours
  3. 我可能更喜欢submodule,因为它可以让我这样做 分别跟踪稿件项目的问题,并保持相关 wiki,作为bitbucket或任何地方的项目。它也可能会 合作稍微容易一点。但是,我听到了 子模块存在缺陷。那些证明是一个 我的问题?
  4. 然后是subtree。这对我来说是一个更好的方法吗? 记得吗?子树或子模块可以使用我喜欢的分支合并策略吗?
  5. 还有其他可能更好的方法吗?

1 个答案:

答案 0 :(得分:-1)

我可能会忽略这一点。 git的存在理由是它很容易分支。这基本上允许您非常简单地创建一个平行的工作线。

但是,如果你只是从你的主人那里创建一个分支,那就整理你的20或者诗歌。一个文件夹,然后提交到这个新分支(维护你的20首诗歌的平行世界),然后当你希望这些更改在你的主分支中注册时,将它合并到主文件中。

$ git branch manuscript
$ git checkout manuscript

$ mkdir my20poems
$ cp *.poems my20poems

$ git add my20poems
# make your changes, now commit them in my commit graph 
$ git commit -m "did some work"
# now I want these changes in master
$ git checkout master
$ git merge manuscript  #or even use the --no-ff switch if you want the branch history kept

您可以随时重新访问之前的任何提交,以便保留所有提交的状态。

$ git log --oneline --decorate --graph --all