[解決済み] git branch、fork、fetch、merge、rebase、cloneの違いは何ですか?
質問
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" の現代的な定義を知らなかったので、コメントも見てみてください。 マイケル・デュラント氏の回答 より詳しい情報は、私の下にあります。
関連
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] Git で現在のブランチ名を取得するには?
-
[解決済み] Git フェッチ リモートブランチ
-
[解決済み] 現在のGitブランチをmasterブランチにする
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Gitのワークフローとrebaseとmergeの質問
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】現在のブランチの先端がリモートブランチより遅れているため、更新が拒否されました。
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み] fatal: EOF が早い fatal: インデックスパックが失敗した
-
[解決済み] ブラウンアウトの一環として、パスワード認証が一時的に無効になっています。代わりに個人用アクセストークンを使用してください[重複]。
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] GitHubです。パーミッションが拒否されました (公開鍵)。
-
[解決済み] Git リポジトリでのマージの衝突を解決するには?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] git cloneとcheckoutの違いは何ですか?
-
[解決済み】Gitのワークフローとrebaseとmergeの質問