Command Palette

Search for a command to run…

ZarynZaryn
ガイド·1 min read

ブランチとマージ

メインのコードに触れずに新しいアイデアに取り組み、あとで取り込む。マージの衝突の解決も一歩ずつ。

## ブランチとは ブランチは名前のついたコミットの列です。リポジトリは `main` という1つのブランチから始まります。新しいブランチは今いるコミットから始まり、それ以降のコミットは `main` とは別になります。 だからブランチは安全に試すための方法です: - `main` を壊さずに新機能に取り組む - 作りかけの機能を別のブランチに置いたままバグを直す - `main` に入る前に、プルリクエストでチームにレビューしてもらう ```text main: A ── B ── C \ new-search: D ── E ``` ## ブランチを作って移る ```bash zev checkout -b new-search ``` 現在のコミットに `new-search` を作り、そこに移ります。コミットしていない変更も一緒についてきます。いつも通りコミットすれば、`new-search` に記録されます。 ```bash zev branch ``` `*` のついたブランチが今いる場所です。 ## ブランチを切り替える ```bash zev checkout main ``` zev はファイルをブランチに合わせて変更します。何も失われません。すべて履歴にあります。 コミットしていない変更が上書きされる場合、zev は止まってファイル名を伝えます。選択肢は3つです: ```bash zev commit -m "作業中" # 1. このブランチにコミットする zev stash # 2. 退避する(あとで zev stash pop) zev checkout --force main # 3. 捨てる ``` ## ブランチを main に取り込む(マージ) ```bash zev checkout main zev merge new-search ``` ブランチを作ってから `main` が変わっていなければ、zev は `main` を前に進めるだけです(*fast-forward*)。両方に新しいコミットがあれば、ファイルごと、行ごとに組み合わせます。違う行を変えていれば自動でうまくいきます。 ## 両方が同じ行を変えたとき `main` とあなたのブランチがファイルの同じ行を変えていると、zev はどちらがほしいかわからないので、何も変えずに止まります: ```text Can't bring 'new-search' in automatically: your commit "Tweak header" and 'new-search' changed the same lines of: index.html Nothing was changed. To combine them by hand, run: zev merge new-search --resolve ``` 手で組み合わせる手順です(*衝突の解決*)。 **1.** `zev merge new-search --resolve` を実行します。 **2.** 表示された各ファイルを開きます。両方が変えた場所に印がついています: ```text <<<<<<< main Welcome to my site ======= Welcome! Search below >>>>>>> new-search ``` **3.** あるべき内容に編集し、3本の印の行を消します。 **4.** ステージして完了します: ```bash zev add index.html zev merge --continue ``` 途中でやめたくなったら `zev merge --abort` ですべて元に戻ります。 ## 使い終わったブランチを削除する ```bash zev branch -d new-search ``` ## Zaryn でのブランチ ```bash zev push origin new-search ``` 他の人は `zev pull origin new-search`、または `--branch new-search` 付きの clone で受け取れます。