Есть ли список филиалов, которые были недавно проверены в Git? - PullRequest
1 голос
/ 17 апреля 2020

Мне надоело набирать имена веток, чтобы просто переключаться между веткой и мастером (или другой веткой), когда мне нужно свернуть мастер и объединить его с веткой, над которой я работаю.

Я хотел бы создать bash скрипт, который будет проверять ветку, которую я извлек до ветки, которую я сейчас проверял

Так что, если у меня есть две ветви master и branch-1

git checkout master (initial branch) 
git checkout branch-1 (do work on branch-1, but need to merge master changes into branch-1)
git checkout master
git pull (pull master changes) (current branch is master, previous branch is branch-1)
git checkout branch-1 <-- replace this command with a command `git lastbranch` that checks out the branch I had open before this branch

По сути, я просто ищу список моих последних проверенных веток, начиная с моей последней ветки

Так что, если я проверил master, и до этого у меня была ветвь -1 проверено, список будет выглядеть как

master
branch-1
... etc

Существует ли какая-либо функциональность?

Ответы [ 2 ]

4 голосов
/ 17 апреля 2020

git checkout (или git switch в Git 2.23 и более поздних версиях) имеет сокращенный синтаксис для «ранее извлеченной ветви»:

@{-1}

означает «одна ветка извлечена a go ", с:

@{-2}

означает" ветвь проверила два a go "и так далее. - само по себе:

git checkout -

означает то же самое, что и @{-1}, для краткости.

(Не существует удобного способа перечисления этих, хотя.)

Тем не менее, вы, вероятно, делаете слишком много работы

Вам не нужно , чтобы обновить master, если вы его не используете.

Предположим, вы работаете над веткой feature, и кто-то сделал новые master коммиты в origin, и вы будете sh объединяться или перебазировать их.

Вы может сделать это:

# make sure everything is committed
$ git checkout master
$ git pull               # runs git fetch and then git merge
$ git checkout -         # back to feature
$ git merge master

но вы можете сделать это вместо этого:

$ git fetch
$ git merge origin/master

Если вы используете рабочий процесс rebase, это:

$ git fetch
$ git rebase origin/master

Обратите внимание на полное отсутствие git checkout шагов. Нам не нужно обновлять master; на самом деле нам даже не нужен master, и мы можем запустить git branch -d master, чтобы полностью его убрать.

2 голосов
/ 17 апреля 2020

Чтобы оформить ранее извлеченную ветку, вы можете использовать da sh: git checkout -.

То же самое относится и к другим системным командам, таким как cd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...