1

数か月前に Git を使い始めましたが、GUI クライアントが欲しかったのでSmartGitを使用しています。

唯一のことは、以前のコミットに戻ろうとすると、非常に混乱することです。たとえば、最近、プロジェクトで検出されなかったバグを発見しました。以前のバージョンに変更するには、SmartGit でbranch>>checkoutを使用しました。これは問題なく機能しましたが、SmartGit はローカル ブランチに切り替えてコミットをチェックアウトすることを推奨しました。これについていくつか質問があります (以下を参照) が、私の主な問題は、それぞれのドキュメントを読んだときに、少し異なることを言っているように見えることです。Git のドキュメントには、「チェックアウト」は

作業ツリーへのブランチまたはパスのチェックアウト

一方、smartgit は、チェックアウトを使用して

作業ツリーを特定のcommitに切り替えます。

  • では、それらは 2 つの異なるもの (つまり、チェックアウトという単語の異なる使用法) であり、そうでない場合、一方がブランチを参照し、もう一方がコミットを参照するのはなぜですか?
  • 同じブランチ内の以前のコミットに移動したい場合、どのように機能しますか?
  • smartgit がこのために新しいブランチを開始することを推奨するのはなぜですか? それは重要ですか?
  • 毎回新しいブランチをセットアップする必要がある場合、ランダムなブランチが多くならないように、このために特別なブランチをセットアップする必要がありますか?
  • ローカル ブランチの提案における「ローカル」の意味は何ですか? なぜローカルである必要があるのでしょうか? これは、bitbucket アカウントと同期してはならないということですか?
4

1 に答える 1

3

いいえ

私は smartgit を使用しませんが、これらの説明は同等です。

分岐混乱

git のブランチは、コミットへの単なるポインターです。したがって、ブランチをチェックアウトすると、作業コピーが特定のコミットに更新されます (「マスター」などの適切な名前が付けられます)。

コミットをチェックアウトしたい場合 (リポジトリ履歴のどこにあるかはまったく問題ではありません) - ハッシュでチェックアウトするだけです。見て回るためだけにチェックアウトする場合は、新しいブランチを作成する必要はありません。ただし、何をしているかによっては、そうすることをお勧めします。コミットをチェックアウトする前または後にそれを行うことができます-少なくともgitに-それは問題ではありません。

git の cli を使用すると、次のように表示されます。

(master) $ git checkout c5d12604219ac1d6fa0f7d8ff4be98c8a3eee0da
Note: checking out 'c5d12604219ac1d6fa0f7d8ff4be98c8a3eee0da'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at c5d1260... Added CakeResponse::file() for serving files as response
((no branch))]$

つまり、git は、サンプル コマンドを使用して、チェックアウトしたコミットのブランチをオプションで作成し、その理由を説明するように求めます (作成したコミットを保持するため)。

地方支店

ローカル ブランチとは、ローカルの作業コピーに存在するブランチを意味します (.git/config に表示され、実行すると表示されますgit branch)。ローカル ブランチには上流のリモート ブランチがある場合とない場合があります (プッシュするものがある場合とない場合があります) - それはあなたの選択であり、ブランチがローカルであるかどうかには影響しません - リポジトリで定義されているため、ローカルです.

于 2012-07-16T16:56:17.873 に答える