Почему FETCH_HEAD
отличается от HEAD
после слияния?
Слияние создает новый коммит, содержащий все изменения от исходного HEAD
, теперьORIG_HEAD
и FETCH_HEAD
.Это означает, что если ваш исходный HEAD
содержал изменения, не содержащиеся в FETCH_HEAD
, то новый (объединенный) HEAD
будет отличаться от FETCH_HEAD
, поскольку он также содержит эти коммиты.
Вещи для проверки
Возможно, ваша текущая ветвь уже обновлена с FETCH_HEAD
из предыдущей выборки, по вышеуказанной причине или по другой причине.
Чтобы проверить это, возьмите sha
(шестнадцатеричное число) из своей головы извлечения следующим образом:
git log -1 FETCH_HEAD
commit bec5aadef68a5d29c9d523358a0189b86cad4c82
Author: Alex Brown <alex@XXX>
Date: Tue Nov 16 10:05:19 2010 +0000
weather report
и скопируйте первые 6 цифр FETCH_HEAD
: bec5aa
далее, найдите это sha
в происхождении вашей головы
git log HEAD | grep "commit bec5aa" -A 5
commit bec5aadef68a5d29c9d523358a0189b86cad4c82
Author: Alex Brown <alex@XXX>
Date: Tue Nov 16 10:05:19 2010 +0000
weather report
, если это возвращает что-либо кроме пустого, FETCH_HEAD
уже был объединен.Любые различия, которые вы видите, находятся в текущем HEAD
, который может быть объединенным HEAD
(или потомком).
* Пример для демонстрации этого "
cd /tmp
mkdir 1
cd 1
git init
echo "Woo" > a.txt
git add a.txt
git commit -m "first commit"
cd ..
git clone 1 2
cd 1
echo "Its nice today" >> a.txt
git commit -a -m "weather report"
cd ..
ls
cd 2
ls
echo "Like peas in a pod" > b.txt
git add b.txt
git commit -m "sayings"
git fetch
git diff FETCH_HEAD
git merge FETCH_HEAD
git diff FETCH_HEAD