23

リモート リポジトリはなく、2 つのブランチを持つローカル リポジトリは 1 つだけです。

$ git branch -a
  master
* devel

このコンテキストの次のコマンドは同じ/同義語ですか?

$ git pull . master

$ git merge master

アップデート:

$ git help pull次の情報を提供します

SYNOPSIS
   git pull <options> <repository> <refspec>...

DESCRIPTION
   ...
   Note that you can use . (current directory) as the <repository> to pull
   from the local repository — this is useful when merging local branches
   into the current branch.

このマンページに記載されているように、なぜこれが役立つのか、実際にはわかりません。

4

3 に答える 3

20

pullは組み合わせコマンドで、fetchその後にmerge. デフォルトまたは適切なパラメーターを使用すると、現在のブランチが同期されます。

問題のパラメーターを使用すると、その作業のほとんどが妨害されます。フェッチ部分は現在のレポを使用するように却下されるため、スキップされ、FETCH_HEAD を却下するマスターに明示的に要求します。

したがって、その形式では、それらは同一であると私は信じています(そして、最初のものもナンセンスのカテゴリに入れます)。

于 2013-06-27T09:45:12.383 に答える
15

git pull . master現在のリポジトリから取得し (ノーオペレーション)、現在のブランチを最新の状態にするために何らかの処理を行いmasterます。その何かはマージかもしれませんが、構成設定pull.rebaseまたはbranch.master.rebase.

マージの場合、マージ戦略は の影響を受ける可能性がありpull.twoheadます。

git merge mastermaster は常にデフォルトのマージ戦略でマージされます。

于 2013-06-27T13:22:09.897 に答える
4

唯一の違い - 2 番目のケース ( ) では、最新のデータではなく、最後のリモート更新からのデータgit merge masterとマージされます。したがって、(または) 作成したばかりの場合は同じように機能しますが、ローカル リポジトリをかなり前に更新した場合は、古いスナップショットとマージされます。fetchgit remote update

のピリオドgit pull . masterが正しい構文かどうかわからない...

于 2013-06-27T11:29:04.283 に答える