Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

git не видит изменений в ветке

#git


git не видит изменений в ветке, после git push origin remote_branch и сравнением
с master не показывает изменений, хотя было сделано множество изменений в файле но
сравнивая с мастером не выводит никаких различий.

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

Вот такая картина:

git checkout -b new_branch

git commit -m "some commits"

git push origin new_branch

git checkout -b my_new_branch_2    

git pull origin new_branch


На этом моменте я получаю все коммиты которые были в ветке new_branch и удаляю некоторые
изменения в файлах test.txt

git push origin my_new_branch_2

git checkout master
git merge my_new_branch_2


Тут я смержился с мастером.

Теперь когда пытаемся сделать мерж с матером с ветки new_branch с которой я ранее
сделал pull то говорит что нет изменений в файле test.txt 
    


Ответы

Ответ 1



Что такое "ветка" Это просто указатель на какой-то коммит. Все коммиты организованы в граф, в котором у каждого коммита (кроме первого) есть предок. Так за один коммит можно вытащить целую цепочку — до самого первого. Все коммиты, которые вот так вытаскиваются, называют «коммитами в ветке X» или «принадлежащими ветке X». Предположим, было так: A - B - C master \ D new_branch Что делает git checkout -b Эта команда создаёт новую ветку, указывающую на тот же коммит, на который указывает текущая ветка: git checkout -b my_new_branch_2 A - B - C master \ D new_branch, my_new_branch_2 То есть после выполнения этой команды ветки new_branch и my_new_branch_2 идентичны. Что делает git pull origin имяветки Команда git pull производит мерж ветки из удаленного репозитория в текущую ветку. Если замержить коммит, который уже принадлежит текущей ветке (т.е. доступен по цепочке предков), то слияние не произведёт изменений. Если никто кроме вас не пушит в ветку new_branch, то она указывает на тот же коммит D, что и ветка my_new_branch_2, так что эта команда ничего не делает: git pull origin new_branch Мерж предка Если после этого сделать ещё коммиты в my_new_branch_2, но не менять new_branch, то вторая фактически будет «частью» первой. Ветка new_branch указывает на коммит D, который является предком E, а следовательно принадлежит ветке my_new_branch_2: A - B - C master \ D new_branch \ E my_new_branch_2 Когда вы мержите my_new_branch_2 в master, в составе этой ветки приходят и коммиты ветки new_branch. Мерж скорее всего у вас происходит по модели "fast-forward" – когда указатель master просто перемещается вперёд на указатель my_new_branch_2: A - B - C - D new_branch \ E my_new_branch_2, master Поэтому попытка повторно замержить new_branch в master не приносит результата.

Комментариев нет:

Отправить комментарий