Файл в git, связанный с репозиторием, находящийся под контролем ревизии, но не связанный с какой-либо конкретной веткой? - PullRequest
6 голосов
/ 22 марта 2010

Скажем, у меня есть файл с именем: "todo"

Это список того, что я хочу сделать для этого проекта.

Я хочу, чтобы этот файл был связан с моим git repo.

Я хочу, чтобы в этом файле были разные ревизии,

однако, я не хочу, чтобы это ассоциировалось с конкретными ветками. Например:

  1. На главном филиале.
  2. Создание базовых предметов ToDo
  3. Ветвь "dev1"
  4. Добавить больше материала в список задач
  5. Ветка "dev2" от мастера.
  6. Добавить больше материала в список задач
  7. Теперь у меня есть разные версии файла todo.

Я просто хочу, чтобы был один файл "todo" - это возможно? Имеет ли это смысл? Я что-то неправильно использую?

Ответы [ 3 ]

10 голосов
/ 22 марта 2010

Другой прием - использовать независимую ветку, проверенную в поддереве вашего проекта, как это делает Джунио Хамано (текущий сопровождающий Git) с todo в Git.Поваренная книга:

$ 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/ останется нетронутым - пока ветка, на которую вы переключаетесь, не содержит конфликтующий путь, конечно.1023 *

Основной репозиторий теперь содержит дополнительную, полностью независимую ветвь, которую можно перемещать и извлекать, как любую другую часть вашего проекта:

$ git branch
* master
  meta
$ gitk --all

Screenshot

1 голос
/ 22 марта 2010

В любое время, когда вы хотите обновить файл todo, вы можете сначала объединить его

git checkout previousBranch todo

Примечание: если вы не объедините, вы можете увидеть содержимое задачидля любой ветви с:

git show myBranch:todo

Если ваш файл todo находится в корневом каталоге вашего хранилища, он будет работать с любого пути, поскольку путь, используемый git showявляется абсолютным из верхнего каталога указанного репо.

Таким образом, вы можете:

  • видеть задачи, которые имеют смысл только в одной ветке
  • иметь скриптконкатенация содержимого всех версий todo для всей ветви (git branch)
1 голос
/ 22 марта 2010

Используйте другое хранилище.

У меня есть каталог ~/org, который автоматически отслеживает gma в git и синхронизирует на моих машинах.Все мои задачи и тому подобное находятся там, но это не связано с каким-либо конкретным проектом.Если бы я хотел один, связанный с конкретным проектом, я бы сделал ~/org/project.org.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...