GIT diff дает мне другую обратную связь, чем git merge - PullRequest
3 голосов
/ 16 ноября 2010

, когда я запускаю

git diff FETCH_HEAD

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

НО ....

когда я запускаю

git merge FETCH_HEAD

, это говорит мне, что все обновлено !!

Где я иду не так?

1 Ответ

2 голосов
/ 16 ноября 2010

Почему 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...