1. ホーム
  2. git

[解決済み] git branch、fork、fetch、merge、rebase、cloneの違いは何ですか?

2022-03-19 05:55:15

質問

Git のブランチ、フォーク、クローンの違いを理解したいのですが。

同じように、私が git fetch とは対照的に git pull ?

また rebase と比較しての意味 merge ?

個々のコミット自体をまとめて潰すにはどうしたらいいですか?

どのように使用され、なぜ使用され、何を表しているのか?

GitHubはどのような位置づけにあるのか?

解決するには?

クローンとは、簡単に言えばリポジトリのコピーのことです。 表面上、その結果は次のものと同等です。 svn checkout ここで、他のリポジトリからソースコードをダウンロードします。 Subversionのような集中型VCSとGitのようなDVCSの違いは、Gitでは、クローンするとき、あなたは実際にすべての履歴とブランチを含むソースリポジトリ全体をコピーしているということです。あなたのマシン上に新しいリポジトリができ、あなたが行ったコミットはすべてそのリポジトリに入ります。あなたがそのコミットを別のリポジトリ(あるいは元のリポジトリ)にプッシュするか、誰かがあなたのリポジトリからコミットを取得するまで、誰もその変更を見ることはできません(もしそれが一般にアクセス可能なものであるなら)。

ブランチは、リポジトリの中にあるものです。 概念的には、開発のスレッドを表します。通常、master ブランチがありますが、xyz 機能を開発中のブランチや、abc バグを修正するためのブランチもあるでしょう。あるブランチをチェックアウトすると、そのブランチにコミットした内容は、そのブランチにマージするかリベースするまで他のブランチと共有されることはありません。 もちろん、ブランチがどのように実装されているかという根本的なモデルを見るまでは、ブランチに関してGitは少し奇妙に見えます。 自分自身で説明するよりも(すでに多くを語ってしまいましたが)、Gitのウェブサイトから引用した、Gitがブランチとコミットをどのようにモデル化するかについての"computer science"の説明にリンクしておきます。

http://eagain.net/articles/git-for-computer-scientists/

フォークとは、Gitの概念というよりも、政治的・社会的な考えです。 つまり、あるプロジェクトの進行状況に満足できない人たちが、ソースコードを持ち出して元の開発者たちとは別に自分たちで作業をすることができるということです。 それはフォークとみなされるでしょう。 Gitはフォークを簡単にします。なぜなら、誰もがすでに自分自身のソースコードのマスターコピーを持っており、元のプロジェクトの開発者との関係を断ち切るのと同じくらい簡単で、SVNのように共有リポジトリから履歴をエクスポートする必要はないからです。

EDIT: GitHub などで使われている "fork" の現代的な定義を知らなかったので、コメントも見てみてください。 マイケル・デュラント氏の回答 より詳しい情報は、私の下にあります。