与repo关联的git中的文件,在版本控制下,但与任何特定分支无关?

时间:2010-03-22 06:35:51

标签: git

说我有一个名为“todo”的文件

这是我想为这个项目做的事情清单。

我希望这个文件与我的git repo相关联。

我希望对此文件进行不同的修订,

但是,我不希望它与特定分支相关联。例如:

  1. On branch master。
  2. 创建一些基本待办事项
  3. 分支“dev1”
  4. 向待办事项列表中添加更多内容
  5. 来自大师的分支“dev2”。
  6. 向待办事项列表中添加更多内容
  7. 现在,我对todo文件有不同的修改版本。
  8. 我只想要一个“todo”文件 - 这可能吗?这有意义吗?我是不是在某种程度上滥用todo?

3 个答案:

答案 0 :(得分:10)

另一个技巧是使用一个独立的分支,在项目的子树中检出,正如Junio Hamano(当前的Git维护者)对Git的todo做的那样。食谱:

$ cd project/
$ git branch
* master
$ git init META

您现在可以在META/

中创建“待办事项列表”和其他文件
$ cd META/
$ echo '* Item 1' > todo.org
$ git add todo.org
$ git commit -m 'Initial version of TODO file'
[master (root-commit) 64748ba] Initial version of TODO file
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 todo.org

让我们将分支名称更改为meta,并将其推回主存储库:

$ git branch -m meta
$ git push .. meta

您必须记住在每次提交后将分支推回;设置提交后挂钩可能是有序的。

META/现在显示为主存储库中未跟踪的文件;让我们在本地忽略它:

$ cd ..
$ git status
# (Shows META/ as untracked)
$ echo META/ >> .git/info/exclude

您现在可以随意切换分支,只要您切换到的分支不包含冲突路径,META/将保持不变。

主存储库现在包含一个额外的,完全独立的分支,可以像项目的任何其他部分一样推送和拉出:

$ git branch
* master
  meta
$ gitk --all

Screenshot

答案 1 :(得分:1)

使用不同的回购。

我保留了一个~/org目录,emacs会自动跟踪git并在我的计算机上进行同步。我所有的待办事项都在那里,但它与任何特定项目无关。如果我想要一个与特定项目相关联的项目,我会创建一个~/org/project.org

答案 2 :(得分:1)

每当您想要更新待办事项文件时,都可以merge it first

git checkout previousBranch todo

注意:如果您不合并,您可以看到任何分支的待办事项内容:

git show myBranch:todo

如果您的todo文件位于存储库的根目录下,它将在任何路径上运行,因为git show使用的路径是所述仓库顶级目录中的绝对路径。 / p>

你可以这样:

  • 查看仅在一个分支中有意义的任务
  • 有一个脚本连接所有分支的所有待办事项版本的内容(git branch