web-dev-qa-db-ja.com

「git fetch && git checkout」と「git checkout」のみの違いは何ですか?

私たちは常に次のようにするべきです:

git fetch && git checkout

またはのみ、

git checkout

たとえば、bitbucketのブランチからチェックアウトを行う場合、コマンドは次のように提供されます。

enter image description here

git fetch && git checkout develop

しかし、なぜこれが必要なのか

git checkout

同じことをしますよね?

7
mario ruiz

複数のプロジェクトと複数のブランチで毎日Bitbucketを使用する必要があるため、ここで説明します。推奨事項を示します。

Bitbucketからチェックアウトする場合、つまりブランチを作成する場合は、例で貼り付けたときに提供されているコマンドを使用して大丈夫です。ただし、最初のチェックアウト後にブランチを切り替え、ブランチを作成するとローカルが同期しなくなる可能性が高いため、端末を使用して次のことをお勧めします。 :

  1. git checkout developまたは必要なブランチ
  2. git fetch && git pullつまり、すべてのブランチと最新の変更を取得し、現在のブランチからすべての変更をプルします。

はい、これは重複した作業のように見えますが、Bitbucketで作業することは、作業中のブランチから最新のものを入手するための最も安全で賢明な方法であると言えます。

ただし、常にブランチを作成し、developまたはmasterブランチに直接プッシュしないでください。

したがって、developブランチにいて、ブランチをチェックアウトして上記を実行し、最新のフェッチとプルを行った後、標準のgit checkout -b my-feature-branchを使用してそのメインブランチからブランチを作成するとします。

私の店での仕事の例:

  1. git checkout develop
  2. git fetch && git pull
  3. git checkout -b feature/JIRA_ISSUE_NUMBER-update-layout-for-this-page

これで、開発ブランチをチェックアウトし、すべての最新の変更とリモートブランチをプルダウンし、その開発ブランチから機能ブランチを作成しました。

お役に立てれば。

5
isaac weathers

git fetchは、(この場合)BItbucketで作成されているリモートブランチへの参照を取得します。

git checkoutは、現在のディレクトリを特定のブランチまたは特定のコミット(パラメータに応じて)に移動します。

何が起きてる? bitbucketにブランチを作成すると、次の理由でコマンドが提供されます。1-ブランチがREMOTEリポジトリに作成された。リポジトリのローカルコピーには、まだ新しいブランチがありません。それがgit fetchコマンドが使用されます。 2- Bitbucketは、その新しいブランチを作成したばかりなので、すぐに作業し、ローカルリポジトリにそれを伝える必要があると想定しています。それがgit checkoutコマンドは

それを達成する唯一の方法ではありません。たとえば、git fetchコマンドを使用して:

git checkout -b {new_branch_name} && git pull Origin {new_branch_name}

これは最も実用的な方法ではありませんが、おそらくこれらのコマンドがどのように機能するかについてのより良いアイデアを提供します。

5
javierojeda

あなたの質問に特定するために、「bitbucketのブランチからチェックアウトを行うとき、彼らは次のようなコマンドを提供します:git fetch && git checkout development "。これは、クラウドまたはリモートで作成されている開発ブランチが、リモートから更新を取得するまでローカルマシンで利用できないためです。

したがって、ブランチを開発するために切り替えまたはチェックアウトするには、最初にすべてのリモート更新をフェッチして、開発ブランチの存在を認識させる必要があります。フェッチを実行すると、ローカルreppoはリモートで作成されている新しいブランチを認識します。また、開発のためにチェックアウトを行うと、新しいローカルブランチがセットアップされ、リモートのcouterpartが追跡されます。

3
sumit singh

git fetchは、リモートロケーションからのすべての変更をプルダウンします

git checkoutは、別のブランチに切り替えます(または、使用方法に応じてファイルを以前の状態に復元します)

フェッチとチェックアウトを使用してブランチを切り替え、更新されたすべてのファイルをプルします。チェックアウトのみを使用してブランチを切り替えますが、ローカルバージョンでの作業を続行します。

1
Zac R.

git fetchは、リモートでOrigin/<branch_name>を更新します。 git checkoutを使用してブランチを切り替えることができます。リモートで新しく作成されたブランチに切り替えようとしていて、ローカルバージョンがシステム上に存在しない場合を除き、どちらにも相互関係はありません。

ただし、git pull(またはgit fetchgit rebase)を実行してからgit checkout -b <another_branch>を作成して新しいブランチを作成すると、新しいブランチがフォークされていることを確認できます。安定したコードの最新バージョン。

1
hspandher