Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revisionBoth sides next revision
devops:git [2020/05/28 21:33] – [Разбиение коммитов и распределение их по веткам] admindevops:git [2021/04/20 11:45] – [Разрешение всех конфликтов слияния в пользу текущего или входящего состояния] admin
Line 115: Line 115:
 И наконец можно выполнить commit: И наконец можно выполнить commit:
   git commit -a -m "Branch 'feature' merged to 'develop'"   git commit -a -m "Branch 'feature' merged to 'develop'"
 +  
 +===== Разрешение всех конфликтов слияния в пользу текущего или входящего состояния =====
 +Если при merge возникли конфиликты, то можно одной командой разрешить все конфликты в ту или другую пользу. \\
 +
 +Оставить все конфликтные участки в текущем состоянии:
 +  git checkout --ours .
 +Применить во всех случаях конфликтов входящие изменения:
 +  git checkout --theirs .
 ====== Переключиться на нужный коммит ====== ====== Переключиться на нужный коммит ======
 Находим нужный коммит с помощью  Находим нужный коммит с помощью 
Line 201: Line 209:
 <code>git commit -m ".gitignore fix"</code> <code>git commit -m ".gitignore fix"</code>
  
 +====== No url found for submodule path ====== 
 +Иногда в проект попадают подпроекты, которые сами по себе являются репозиториями git. В этому случае они становятся **submodules** и **git** работает с ними как со ссылками на внешние репы. То есть он не сохраняет в репозитории файлы этих проектов, а скачивает их по требованию. \\ 
 +Однако, может так статься, что файлы подпроекта становятся частью проекта, а ссылки на внешние репозитории изменяются или перестают работать. \\ 
 +Если ссылка на внешний репозитрий изменилать, то следует поправить ее в файле **.gitmodules** в корне проекта: 
 +<code>[submodule "path_to_submodule"]  
 +  path = path_to_submodule  
 +  url = git://url-of-source/</code> 
 +А если подпроект нужно просто сделать частью проекта, то удаляем его так: 
 +  git rm --cached path_to_submodule 
 +   
 +====== fatal: refusing to merge unrelated histories ====== 
 +Иногда, после манипуляций с историей коммитов нарушается связность историй веток и при попытке выполнения 
 +  git merge BRANCHNAME 
 +Появляется сообщение вида: 
 +  fatal: refusing to merge unrelated histories 
 +В этом случае - если нам нужно заменить содержимое одной ветки, содержимым другой, то в ветке куда делаем merge выполняем: 
 +  git pull origin BRANCHNAME -X theirs --allow-unrelated-histories 
 +То есть - подтягиваем в текущую ветку все изменения из ветки репозитория **BRANCHNAME**, разрешаем нарушение истории коммитов (**--allow-unrelated-histories**) и автоматически разрешаем все конфликты в пользу применения входящих изменений (**-X theirs**)
  • devops/git.txt
  • Last modified: 2021/12/01 09:01
  • by admin