2017-02-03 9 views
1

Я хотел бы создать псевдоним git, который позволяет мне синхронизировать мою ветку с исходной ветвью, из которой она была разветвлена.Может ли git знать, с какой ветви ваша ветка ветви была разветвленной?

Например, если я разветвлен от <branch A>, есть ли способ для псевдонима git распознать, что ему нужно потянуть с origin/<branch A>, чтобы синхронизировать?

+0

Is 'origin/' родительская ветка? – Inian

+0

Да. 'origin/' будет родительской ветвью ''. Таким образом, запуск псевдонима будет объединять '' в ''. –

+0

Почему бы не простое слияние из '', если оно присутствует в ''? – Inian

ответ

4

Git не знает, или все равно, как имя филиал, как master или feature-31415 или ourDevelopmentProcessUsesReallyLongBranchNamesBecauseTheyHateUs, произошло. Все, что он знает или заботится о том, что имя существует и в настоящее время указывает на какое-то конкретное сообщение. Тем не менее, каждая ветка может иметь один вверх по течению.

Восходящие что настройки берутся в качестве аргумента слияния при запуске git merge без аргументов, или использовать в качестве аргумента для <upstream>git rebase если вы бежите, что без каких-либо аргументов, и так далее. Как правило, восходящий поток для master составляет origin/master. Вы можете установить sbr (короткая ветвь), чтобы иметь origin/anotherLongNameBecauseTheyWantToReplaceUsWithRobots в качестве своего восходящего потока, и никогда больше не нужно вводить его снова.

Чтобы установить origin/zorg как выше по потоку для evil:

git branch --set-upstream-to=origin/zorg evil 

и снять вверх по течению:

git branch --unset-upstream evil 

Установка на входе просто поле из двух частей:

$ git config --get branch.master.remote 
origin 
$ git config --get branch.master.merge 
master 

Вот как и почему master имеет origin/master как его восходящий поток. Верхний поток также используется автоматически git status и является целевой по умолчанию для git push и является результатом применения @{upstream} к названию филиала. Все это встроено в Git. Уловка состоит в том, что вы получаете только один восходящий поток на каждую ветку. Если это все, что вам нужно, вы в порядке.

Вы можете добавить свои собственные элементы конфигурации и т.д .:

$ git config branch.master.zorblax giant-space-eel 

но ничего в самой Git не будет использовать это. Тем не менее, Git - это гигантский набор инструментов, а не просто предварительное решение, которое никогда не может использоваться ни для чего, кроме непосредственного воображения его разработчиков: вы можете написать свой собственный код, который использует настройку zorblax, если хотите.


Вы можете установить местное отделение в верхнем течении другого местного отделения. В соответствии с конфигурацией, это устанавливает remote часть ., которую остальная часть Git затем игнорирует, когда это необходимо, например, для отображения символа @{upstream}.

Существует также скрытая информация, связанная с отображением имени филиала, когда remote установлено на имя пульта. Это связано с тем, что исходное значение настройки merge предшествует изобретению пультов. Обычно это не имеет никакого значения.

President Zorblax. Примечание дата комикса, более десяти лет назад. Я подозреваю, что текст на красной кнопке более новый, хотя ....

+1

Вы можете так же легко отслеживать локальные ветви. – jthill

+0

@jthill: да, я подумал об упоминании этого, но это показалось немного нецелесообразным для его конкретного использования. Однако я добавлю его в сноску 1. – torek