#git #alias #bash #git-branch
#git #псевдоним #bash #git-branch
Вопрос:
На основе этой статьи я хотел создать аналогичный псевдоним (поток, описанный ниже). Поскольку комментарии автора / статьи отключены, я подумал, что спрошу об этом здесь. Предполагая, что вы находитесь в ветке ‘topic’, я хотел бы изменить поток, чтобы выполнить следующее:
- Определяем и сохраняем текущее название ветки в $branch (используя псевдоним из здесь)
- Переключитесь обратно на главную ветку
- Извлекаю с удаленного
- Переключитесь обратно на $branch
- Перебазируйте $ branch в master
- Переключитесь обратно на master
- Объединить изменения из $ branch
- Запускаем wtf
Псевдоним psuedo может быть чем-то вроде (зная, что ссылки на $ branch, скорее всего, неверны):
название ветки = !git для каждой ссылки —format=’%(refname:short)’ git symbolic-ref HEAD
опубликовать = !git branch-name > $branch amp;amp; git checkout master amp;amp; git pull amp;amp; git checkout $branch amp;amp; git rebase master amp;amp; git checkout master amp;amp; git merge $ branch
Есть ли способ это осуществить? Я понятия не имею, как сохранить / использовать переменную $ branch (обратите внимание, исходящую из фона windows / c # / VSS, который в git все еще довольно зеленый).
Последнее замечание, я использую git из окна консоли Windows Powershell.
Заранее спасибо.
Ответ №1:
Git checkout -
будет выполнена проверка предыдущей ветви, поэтому вам не нужно ее сохранять.
Когда вам это действительно нужно, вы можете получить его из .git / HEAD
Надеюсь, это поможет
Комментарии:
1. Так вы говорите,
publish = !git checkout master amp;amp; git pull amp;amp; git checkout - amp;amp; git rebase master amp;amp; git checkout master amp;amp; git merge -
будет работать?2. так что все это работало до слияния git -. Это не удалось. Есть предложения?
3. Вы не можете
merge -
.-
работает только сcd
иgit checkout
. Он изменяет каталог на предыдущий и проверяет предыдущую ветвь соответственно.4. вам нужно сделать
git merge head@{1}
.head@{1}
означает 1-е место в истории, на которое указал head. Это ваша другая ветка.5. Спасибо, это сработало.
checkin = !git reset --soft master amp;amp; git commit -a amp;amp; git checkout master amp;amp; git pull amp;amp; git checkout - amp;amp; git pull --rebase . master amp;amp; git checkout master amp;amp; git merge head@{1}