Как получить последний коммит из ветви A, который был отпуском, когда ветка B была объединена с A? - PullRequest
0 голосов
/ 01 мая 2020

Мне нужно проверить версию моего проекта локально, чтобы я мог работать с функциями, существовавшими до слияния ветви B с A, поэтому мне нужно работать с последним коммитом из A непосредственно перед слиянием B.

Заранее спасибо.

Редактировать

Предположим, что у нас есть фиксация 1 на ветке A и на ветке B, мы имеем фиксацию 2,3,4,5 ... п. Поскольку ветвь не была объединена до некоторого времени спустя, некоторые другие pr были объединены в A, поэтому теперь мы имеем на A коммиты 1, n + 1, ... Y.

Теперь мы объединяем ветку B в A и продолжайте работу до тех пор, пока через несколько месяцев.

Первый вопрос: будет ли A оставаться как 1, n + 1, ... Y, 2,3,4,5 ... n после слияние?

Основной вопрос: Как я могу получить коммит 1, если у меня его нет, это идентификатор или сообщение о коммите?

Ответы [ 3 ]

0 голосов
/ 01 мая 2020

Используйте вишню, чтобы внести изменения в текущую ветку из другой ветви

0 голосов
/ 01 мая 2020

Вы можете проверить любой исторический коммит, как отдельную ГОЛОВУ . В Git используется специальный режим, в котором вы просматриваете коммит, но обычно не выполняете новую работу.

Для этого найдите необработанный идентификатор кома ha sh ID или использовать любой тег Git , который в основном является способом ввода понятного человеку имени, чтобы сказать , что это имя должно быть, с настоящего времени до истинного смерть этого проекта, значит га sh ID _____ (заполните бланк). Используйте этот ha sh ID или удобочитаемое имя в качестве аргумента для git checkout или git switch. Если вы используете необработанный идентификатор ha sh, вы можете сокращать его до тех пор, пока он не будет двусмысленным, но простой способ сделать это правильно - необработанные идентификаторы ha sh очень недружелюбны для людей, которые всегда 1 понять их неправильно - это вырезать и вставить идентификатор ha sh из некоторого вывода git log, например:

git checkout 86ab15cb154862b6fa5cc646dac27532f881e1fb

Когда вы работаете с репозиторием Git, вы обычно работаете с тем, где Git подготовил для вас рабочее дерево или рабочее дерево область. Это git checkout заполняет ваше рабочее дерево из указанного вами коммита, который становится текущим коммитом.

(Если у вас Git 2.23 или новее, вы можете использовать sh для использования git switch вместо git checkout здесь. В данном случае он делает то же самое.)


1 Вставьте сюда искаженную процедуру Гилберта-и-Салливана. "Что, никогда? Нет, всегда!" или что-то в этом роде.


Что такое отключенный HEAD по сравнению с неотключенным (присоединенным) режимом HEAD - это все о

При обычном повседневном использовании Git вы используете что-то вроде:

git checkout master        # or git switch master

или:

git checkout develop       # or git switch develop

, где вы указываете название филиала . Имя ветви выбирает коммит (по его sh ID как всегда) и Git заполняет ваше рабочее дерево из этого коммита, но вместо просто выбора коммита это также говорит Git: ... и когда я сделаю свой следующий коммит, добавьте его в используемую мной ветку.

Когда вы используете:

git checkout <raw hash ID>

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

(Если вы делаете совершаете новые коммиты в этом режиме, вы получаете возможность сказать Git о, и держите их сейчас , пока вы делаете это достаточно быстро - в пределах месяц или около того, по умолчанию - повторного присоединения HEAD к ветви или переключения на другой коммит. Git также использует этот режим отключенного HEAD для некоторых своих операций, например, git rebase.)

0 голосов
/ 01 мая 2020

Вы можете сделать git pull, чтобы убедиться, что ваш проект обновлен с хранилищем. Теперь возьмите идентификатор фиксации до слияния B (назовем его commit-id) и выполните следующие команды:

$git branch my-new-branch                //This will create a new branch
$git branch -f my-new-branch commit-id   //This will point your local branch to the new commit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...