2013-06-27 14 views
15

リモートリポジトリがなく、ブランチが2つのローカルリポジトリが1つだけです。git pullの違い。マスターとgitのマージマスター

$ git branch -a 
    master 
* devel 

この文脈同じ/同義語のコマンドを次していますか?

$ git pull . master 

$ git merge master 

UPDATE:

$ 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. 

このマニュアルページで述べたように、これは便利である理由私は実際に理解していません。

+1

いいえgit-merge - 2つ以上の開発履歴を一緒に結合します。そしてgit-pull - 別のリポジトリまたはローカルブランチからフェッチしてマージする – cptnk

答えて

8

git pull . masterは、現在のリポジトリからフェッチ(ノー・オペレーション)、その後masterで最新の現在のブランチを持って何かを行います。何かがマージされるかもしれませんが、構成設定pull.rebaseまたはbranch.master.rebaseに応じてリベースすることもできます。

マージの場合、マージ戦略はpull.twoheadの影響を受けます。

git merge masterは、常にデフォルトのマージ戦略でマスターをマージします。

11

pullは、組み合わせコマンドであり、fetchの後にmergeが続きます。デフォルトまたは有効なパラメータでは、現在のブランチを同期させます。

問題のパラメータでは、ほとんどの作業が妨害されます。フェッチ・パーツが現在のレポを使用するために無効になるため、スキップされ、マスター・オーバーライズFETCH_HEADを明示的に要求します。

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

+0

リモートは '。'なのでどちらも同じです。 – jszakmeister

+0

私が指摘したように、リモートリポジトリはありません。 'fetch'は何もしません。答えを調整できますか? git pullはgit fetchとgit mergeと同じことに言及してうれしく思います。 – Hotschke

2

唯一の違い - 二番目のケース(git merge master)では、の新鮮なデータとマージされますが、前回のリモートアップデートのデータはありません。つまり、fetch(またはgit remote update)を作成しただけの場合は同じように動作しますが、ローカルリポジトリを以前に更新した場合は、古いスナップショットとマージされます。

わからないgit pull . masterで期間は正しい構文...

+0

それも私を困惑させましたが、フェッチ部分をスキップして動作するようです –