Bash Linux + Git: от новичка до уверенного пользователяРабота с ветками и управление историейВетвление и слияние
Ветвление и слияние
Уроки курсаВетвление и слияние
Давайте посмотрим на следующий скрипт, который подготавливает наш репозиторий к мердж-конфликту.
#!/usr/bin/env bash
set -e
# 1. Инициализируем новый репозиторий
git init conflict-demo
cd conflict-demo
# 2. Делает первый коммит с базовой версией greet.js
cat > greet.js << 'EOF'
function greet() {
console.log("Hello, world!");
}
EOF
git add greet.js
git commit -m "Add initial greet.js"
# 3. Создаём feature-branch и меняем реализацию
git checkout -b feature-branch
cat > greet.js << 'EOF'
function greet(name) {
console.log(\`Hello, \${name}!\`);
}
EOF
git add greet.js
git commit -m "Feature: make greet accept a name"
# 4. Возвращаемся на master и вносим другое изменение в ту же строку
git checkout master
cat > greet.js << 'EOF'
function greet() {
console.log("Hi there!");
}
EOF
git add greet.js
git commit -m "Master: change greeting text to informal"
После чего в репозитории выполним git merge feature-branch и увидим следующую картину
Осталось принять текущее или входящее изменение (или написать что нибудь свое, что тоже вариант). По факту нам нужно просто изменить greet.js произвольным образом, VSCode в данном случае лишь предлагает наиболее популярные варианты.
После чего сделав git add greet.js и git commit мы совершим необходимый merge реквест. (Победа)
Здесь мы рассмотрели лишь один из типов конфликта, на самом деле их довольно много, однако решаются все однотипно.
