Создание псевдонима ‘git publish’, но необходимо сохранить временную переменную

#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}