У меня есть два репозитория. Время от времени я хочу объединить содержимое other
в main
. Однако слияние игнорирует удаленные файлы. Позвольте мне объяснить это на примере:Git игнорирует удаленный файл при слиянии
mkdir -p test/main test/other
cd test/other/
git init
touch one two three
git add .
git commit -m "Add one, two and three."
cd ../main/
git init
touch four
git add .
git commit -m "Add four."
Добавить other
в main
в качестве пульта дистанционного управления.
git remote add other ../other/
git fetch other
Слияние его содержания.
Он правильно добавляет файлы. Теперь удалите файл в other
.
cd ../other/
git rm two
git commit -m "Remove two."
Слияние меняется на main
.
cd ../main/
git fetch other
git merge --squash other/master
После слияния git status
говорит:
# On branch master
nothing to commit (working directory clean)
Я хотел бы ожидать, что слияние удалить two
, так как он был удален в other
. Что я делаю не так?
Правда, это объяснение имеет смысл. Я хотел сделать сквош-слияние, чтобы не загрязнять историю основ другими. Но похоже, что другого выхода нет. Спасибо за вашу помощь! –
@GergoErdosi Если вы хотите * просмотреть * незагрязненную историю, посмотрите опцию 'first-parent' на' git log'. – Borealid
Спасибо за подсказку! –