git создает только один каталог .git
. svn
- это каталог, который разбрасывает каталоги .svn
в КАЖДОМ каталоге.
Ваше время было бы намного лучше потрачено на изучение полезных команд git (таких как git merge --squash
). Используйте git, он будет делать то, что вы хотите без проблем.
<ч />
Edit:
С помощью git вы можете хранить все это в одном месте, переключаться туда-сюда по своему желанию и совершать столько коммитов, сколько захотите.
Чтобы уменьшить конфликты, вы можете захотеть объединить Фазу 1 с Фазой 2 (так как вы делаете редкие изменения в Фазе 1). Но это полностью зависит от вас.
Вот как я бы сделал это с помощью git:
cd /path/to/project
git init
git add .
git commit -m "Initial Commit"
В этот момент вы находитесь в основной ветке с одним коммитом, который называется «Initial Commit». Теперь давайте создадим ветки.
git branch Phase1
git branch Phase2
Теперь для работы на Phase2:
git checkout Phase2
... work ...
git add ...
git commit
Переключитесь на Фазу 1 и сделайте некоторую работу.
git checkout Phase1
... work ...
git add ...
git commit
Переключитесь на фазу 2 и сделайте еще немного работы.
git checkout Phase2
... work ...
git add ...
git commit
В соответствующее время перенесите изменения из Фазы 1 в Фазу 2 (или наоборот):
git checkout Phase2
git merge Phase1
... resolve any conflicts and commit if needed ...
Повтор ... Вы сможете делать столько коммитов, слияний и веток, сколько вам нужно, чтобы оставаться на вершине проекта.
Также используйте git tag ...
для создания тегов, которые указывают на данный коммит. Таким образом, вы всегда можете вернуться назад без необходимости перебирать историю.
<ч />
Edit:
Мы запускаем git из командной строки, поэтому я не очень хорошо знаю, какие существуют инструменты GUI. Это не должно быть трудно найти.
Когда вы сталкиваетесь с конфликтом, git помечает файлы как конфликтующие (git status
), а также объединяет их как можно лучше. Там, где слияние не может быть завершено, в файлах остаются очень четкие маркеры:
<<<<<<< yours:sample.txt
Conflict resolution is hard;
We went shopping yesterday.
=======
We go shopping today.
>>>>>>> theirs:sample.txt
Таким образом, вы просто удаляете одно из двух и редактируете остаток в соответствии с требованиями.
Такое случается редко и его очень легко убрать.