Как я могу сохранить не полностью объединенный индекс в git? - PullRequest
9 голосов
/ 07 января 2011

Я работаю над длительным процессом слияния с несколькими конфликтами.

Что я могу сделать, чтобы сохранить промежуточное состояние, чтобы периодически сохранять резервные копии на случай возникновения катастрофы?

Ответы [ 2 ]

3 голосов
/ 07 января 2011

Вы можете зафиксировать свою работу и отправить ее на сервер во временную ветку. Но для этого вам нужно будет зафиксировать файл с маркерами конфликта (git add . ; git commit). И я советую вам не делать этого, так как слишком легко пропустить одно из конфликтующих мест, когда вы вернетесь к слиянию. Вы также можете попытаться завершить процесс слияния (git squash save), но я не знаю, можно ли отправить ссылку на сквош на сервер.

Другой альтернативой может быть попытка разбить ваше сложное объединение на более мелкие блоки и протолкнуть каждое промежуточное объединение.

Например, если у вас есть следующая история:

*---*---*---*---*---*---*---*---*---A
    \
     \--*---0---1---2---3---4---5---B

И попробуйте объединить B с A, вы можете сделать то же самое, сначала объединяя 0, затем 1, затем 2, затем 3, ... затем, наконец, B (0, 1, 2, ... может не быть последовательный коммит, но некоторые важные вехи в ветви B).

Это стратегия, которую мы используем при выполнении сложных слияний. Объединенная ветвь может не находиться в работоспособном состоянии во время этих слияний, поэтому не следует переходить непосредственно к A, а к другой ветви (A-B-слияние), а затем, когда слияние завершено, передать все к A.

0 голосов
/ 22 ноября 2012

, но в конкретном случае нельзя совершить процесс слияния, который я ищу!

Должна быть возможность перемещать временные .git/MERGE_HEAD (созданные при слиянии ), фиксировать и восстанавливать .git/MERGE_HEAD.

...