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