2015-03-17 2 views
0

Я использую скрипт для управления процессом разработки. Несколько раз мне нужно знать, ожидает ли слияние.Как узнать, продолжается ли слияние в git

Я использую «git ls-files --unmerged», но он не работает, когда конфликты разрешены, и файлы с несвязанными файлами добавлены в индекс.

В этом случае существует ли способ узнать, продолжается ли слияние?

спасибо.

ответ

4

Из сценария: посмотрите, если "$(git rev-parse --git-dir)"/MERGE_HEAD существует (это как __git_ps1).


Вручную, я предоставляю статус статуса репо в своем приглашении.

__git_ps1 имеет очень полезные функции. Помимо отображения вашей текущей ветви, статуса, статуса индекса, статуса удаленной отслеживания в командной строке, он сообщает вам, если вы продолжаете слияние.

Вы можете найти инструкцию there.

Короче говоря, download git-prompt.sh, положить его в PATH, источник его в вашем ~/.bashrc, используйте __git_ps1 в вашем PS1 в ~/.bashrc.

Прочтите комментарий вверху git-prompt.sh для получения дополнительных функций.

Пример:

[email protected]:~/tmp/sigrt_val (master *) $ 

(показывает текущую ветвь master, и что у меня есть локальные изменения *)

Еще один пример с конфликтующим слияния:

[email protected]:~/tmp/sigrt_val (two) $ git merge one 
Auto-merging test.c 
CONFLICT (content): Merge conflict in test.c 
Automatic merge failed; fix conflicts and then commit the result. 
[email protected]:~/tmp/sigrt_val (two *+|MERGING) $ 

(* для локального изменения, + для поэтажных файлов, |MERGING для в настоящее время незавершенного меня rge)

+0

спасибо. Я смотрю, существует ли .git/MERGE_HEAD. – nuggets

+0

@nuggets, пожалуйста, считайте это принятым ответом, в этом случае. – Gauthier

3

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

С сайта:

$ git status 
On branch master 
You have unmerged paths. 
    (fix conflicts and run "git commit") 

Если вы закончили конфликты, вы, вероятно, увидите сообщение, как это:

$ git status 
On branch master 
All conflicts fixed but you are still merging. 
    (use "git commit" to conclude merge) 

__git_ps1 сценарий замечательный визуальный комфорт, но он все еще стоит на плечах стандартных метаданных, которые можно найти в других частях Git.

Смежные вопросы