ブランチと手術

ブランチ、リモート、サイドバー

並べ替えと検索のできる 1 つのサイドバーが、ブランチ、リモート、タグ、スタッシュ、 ワークツリー、サブモジュール を抱えています。どのセクションも非表示にしたり並べ替えたり でき(設定 → レイアウト)、絞り込みボックスはそのすべてに効きます。 どのセクションやフォルダを開いたまま・閉じたままにしたかは、リポジトリごとに記憶され、再起動後も保たれます。

サイドバーは長い一覧ではなく、ペインの積み重ねです。開いたセクションは、折りたたまれた セクションが残した高さを取り、折りたたまれた側は下に見出し行として並びます。いくつも 開けばその高さを等分し、それぞれが自分でスクロールします。タグが何百もあるセクションは 自分のペイン内でスクロールし、ほかの見出しはその場に残るので、クリックしたいものが画面 から消えません。収まりきらない数を開くと、すべてのペインが見出しまで一緒に縮みます — サイドバー自体はスクロールしません。

まだ整えていないリポジトリでは ローカル だけが開いた状態で始まり、ほかの セクションは見出しとして始まります。300 個を超える参照を持つセクションは、それでも 折りたたまれた状態で始まります。削除されないまま何千ものリモートブランチが溜まった リポジトリでは、そうしないと頼んでもいないのにすべてが画面に並びます。一度開けば、 その選択はほかと同じように記憶されます。

ピン留めしたブランチを上部に留めたサイドバー

ブランチ

作成、チェックアウト、名前変更、削除 — ローカルもリモートも。ブランチの行には次が 表示されます。

  • 上流に対する ↑進んでいる数 / ↓遅れている数、
  • リモートごとの存在バッジ(どのリモートにこのブランチがあるか)、
  • コンフリクトレーダー の走査後に付く リスクの点、
  • リモートが 履歴を書き換えた ときの ⟳ の印。

名前に / を含むブランチは、自動で折りたためるフォルダにまとまります。 子が 1 つでもフォルダーのままです。release/1.2.3 は 1.2.3 を入れた release なので、あとから release/1.2.4 を足しても木の形は変わりません。 子が 1 つのフォルダーが続くと 1 つのヘッダーにまとまります (dependabot/npm_and_yarn)。フォルダー見出しはフォルダー印、ref 本体は ブランチ・リモート・タグの印です。

フォルダの見出しを右クリックすると、グループ全体に対して操作できます。feature 配下のブランチをすべて削除(4 件) は、どのブランチが消えるかを正確に列挙する 1 回の確認のあと、中身をすべて削除します — いまいるブランチは除外されます。同じメニューはリモートブランチのフォルダにもあり、そちらはリモートから削除します。

ツールバーのブランチドロップダウンには、ローカルブランチとリモートブランチが一覧表示されます。 このドロップダウン内のブランチを右クリックすると、ローカルブランチの名前変更、ブランチ名のコピー、 新しいワークツリーでのチェックアウト、アクティブなブランチへのマージ、削除ができます。 リモートブランチでは名前変更は表示されず、確認後にリモートから削除されます。 選択した参照がすでにアクティブなブランチに含まれている場合、Gitcito はマージを表示せず、 そのブランチがすでにチェックアウトされている場合はワークツリーの作成を無効にします。

ツールバーのドロップダウンでのローカルブランチ操作

ツールバーのドロップダウンでのリモートブランチ操作

行はファイルと同じように複数選択できます。⌘/Ctrl+クリックで行を切り替え、Shift+クリックで範囲を選択し、Shift+↑/↓ で最後にクリックした行から選択を広げます。選択範囲を右クリックすると一括メニュー — 4 件のブランチを削除 — が開き、完全な一覧つきで確認します。同じ操作はリモートブランチ、タグ、スタッシュでも使えます。

スラッシュ区切りのブランチ名がツリーにまとまったところ

ブランチの名前を変更する

3 日前に fix と名付けたブランチは、今日は誰にも位置づけられないブランチです。 問題に気づいた場所から名前を変えてください。

場所 操作
サイドバー ブランチを右クリック → 名前を変更…
ツールバーのブランチドロップダウン ブランチを右クリック → 名前を変更…
コミットグラフ コミット上のブランチバッジを右クリック → 名前を変更…
コマンドパレット ⌘/Ctrl+K → ブランチ名を変更(チェックアウト中のブランチが対象)

ローカルの名前変更は git branch -m です。即座に反映され、⌘Z で取り消せます — 取り消しエントリが元の名前に戻します。今いるブランチの名前を変えても、その ブランチに留まります。

ブランチがリモートを追跡している場合は 名前を変更(リモートも)… も選べます。 ローカルで改名し、新しい名前を push し、古い名前をリモートから削除します。 これは 取り消せません — 古いリモートブランチは消え、それをチェックアウトして いた人は自分で切り替える必要があります。グラフのバッジでは、ブランチがちょうど 1 つのリモートを追跡しているときだけ表示されます。複数ある場合は、上流が一意に 決まるようサイドバーからブランチを選んでください。

制限: Gitcito は古い名前を参照していたものを書き換えません — 開いている プルリクエストは作成時のブランチを指したままで、ブランチ名のパターンに一致させて いる CI ルールは一致しなくなります。別の ワークツリー で チェックアウト中のブランチの改名は失敗し、git がそう伝えます。

チェックアウトしていないブランチをプル/プッシュする

ローカルブランチを右クリックすると、チェックアウト中のブランチではなく その ブランチに対して働く プル と プッシュ が出ます。3 本のブランチを 追いつかせるためにチェックアウトを往復する必要はありません。 フェッチ・プル・プッシュ を参照。

ピン留めしたブランチ

何度も戻ってくるブランチには星を付けましょう。行にカーソルを合わせて ★ をクリックするか、 右クリック → ブランチをピン留め。それらはローカルセクションの先頭にある ピン留め グループに現れ、リポジトリごとに記憶されます。下のいつもの場所にもそのまま残ります。

リモートブランチをチェックアウトする

リモートブランチをダブルクリックすると、それを追跡するローカルブランチが作られます。 同名のローカルブランチがすでにあり、しかも 分岐している 場合、Gitcito はどう 折り合いをつけるか — リベース、マージ、リセット — を尋ね、その前にブランチをバックアップ することも提案します。

分岐したブランチのプロンプト。リベース、マージ、リセットと、バックアップの選択肢

ローカルブランチが遅れている場合

チェックアウトの一部としてリモートの先頭までファストフォワードされます。作業ツリーが 汚れている場合は名前付きスタッシュに退避し、更新後に復元するので、ローカルの編集で 更新が中断することはありません。

ローカルブランチが進んでいる場合

ローカルブランチが進んでいてリモートに新しい変更がない場合、そのままチェックアウト すると リモート ブランチを求めた操作に未プッシュの自分の作業で答えることになります。 そのため、どちらを意図したのか答えるまで何もチェックアウトされません。

選択肢 何が起きるか
ローカルをチェックアウト ローカルブランチに切り替え、コミットはそのまま。他のクライアントが黙って行う動作です。
リセット(soft) ブランチをリモートの先頭に戻し、コミットの変更はステージに残します。すぐ再コミットできます。
リセット(mixed) 同じ移動ですが、変更は作業ツリーに未ステージで残ります。
リセット(hard) コミットとその変更をまとめて破棄します。

進んでいるブランチのダイアログ。ローカルをチェックアウト、または soft・mixed・hard でリセット

先にバックアップブランチを作成 をオンのままにすると、何かが動く前にローカルの先頭が backup/<ブランチ>-<タイムスタンプ> として保存されるため、hard リセットでもチェック アウト1回で取り戻せます。リセットは元に戻す履歴(⌘Z)にも入りますが、有効なのは リポジトリを閉じるまでで、バックアップブランチのほうが長く残ります。

制限: このダイアログは取得したばかりの追跡refとしか比較しません。フェッチが失敗した リモート(オフライン、認証エラー)は、最後に判明していた先頭と比較されます。コミットが 良いかどうかは何も言いません — ここにあって向こうにない、それだけです。

リモート

サイドバーのリモート欄で、リモートの追加・編集・フェッチ・削除をします。ひとつも ないリポジトリでフェッチ、プル、プッシュすると、何もしない代わりに同じ リモート を追加 ダイアログが開きます。URL を貼るか、ホスト上にリポジトリを作ってくださ い。フェッチ、プル、プッシュ を参照。

関連項目: マージとリベース · ワークツリー

この翻訳を GitHub で改善