1. ホーム
  2. git

autosetuprebase と autosetupmerge の比較

2023-10-12 03:39:44

質問

私は、グローバルでノッキングしていた .gitconfig ファイルをノックしていたところ、このような結果になることに気づきました。

[branch]
  autosetupmerge = always
  autosetuprebase = always

これは少しばかり直感に反するように思われましたが、いくつか読んでみたところ、両方が必要なのか、それとも autosetupmerge を削除して、単に autosetuprebase . 私が携わっているほとんどのプロジェクトは、まっすぐな下流->上流の流れを持っているので、ブランチを扱うときは一般的にリベースが好ましいです。

どのように解決するのですか?

ここで直感に反するのは、これらのプリファレンスの命名です。これらは同じ機能を参照しているように見えますが、実際にはそうではありません。

  • autosetupmergegit branchgit checkout -b を意味する。 --track オプションを意味します。 always ,
    • git checkout branchname もし branchname がリモートに存在し、ローカルに存在しない場合は branchname が作成され、そのリモートの対応する
    • git checkout -b newbranch は新しいブランチを作成します newbranch このコマンドを実行する前にチェックアウトしたブランチを追跡します。
  • autosetuprebase は、新しいブランチがリベースされるように設定されるべきかどうかを制御します。 git pull にリベースさせるかどうかを制御します。 always を設定すると、ブランチは git pull は常にマージではなくリベースを実行するようにブランチを設定します。(このオプションを変更しても、既存のブランチはその設定を保持することに注意してください)。

というわけで、完全に理にかなっています。 autosetupmerge = alwaysautosetuprebase = always 実際、私もそうしています。