#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 не приносит результата.
Комментариев нет:
Отправить комментарий