gitの仕組みを理解する
8069 ワード
この記事では、Gitの最も一般的に使用される機能の実用的な理解を得るのに役立ちます.これらの概念のしっかりした把握を持つことは、あなたが一般的な間違いを避けるのを助けて、さらにより効率的にgitを使います.
初心者のために、それは最初から最後まで記事を読むことをお勧めします.経験豊富なユーザーは、リファレンスガイドとして使用することができます.
公式Gitウェブサイトは、それを定義します
なぜGitを使うべきですか? Gitは、それらに導かコミットを検査してバグを追跡することができます. CI/CDパイプライン経由でコードの展開を自動化し、各コミットが新しいビルドをトリガーします. Gitはあなたのファイルの変更を追跡し、時間をかけて自分のバージョンを管理することができます. あなたのコードが特定の標準またはスタイルガイドに付着することを保証する前コミットフックを持つことができるコード品質保証.
Gitプロジェクトは
ファイルはgitで処理されるこれらのステップを通過しなければなりません
gitのth th work treeは、すべてのファイル(トラックと追跡されていない)を含んでいる.すべてのファイルとサブディレクトリは、ステージング領域に追加される資格があります.
作業木の変更は
これは、作業ツリーからファイルが
コミットログとヘッドは、最新のコミットを指します.
として知られているGIT倉庫
訪問することをお勧めします
おそらく次のオブジェクトに遭遇するでしょう
GITリポジトリの初期化
エーLocal Repository . Aとして知られているリモートリポジトリ
ワーキングディレクトリは、現在作業中のファイルから構成されます.作業ツリーをファイルを表示したり変更したりできるファイルシステムと考えることができます.
作業ツリーは、現在取り組んでいるファイルから成ります.ファイルは通常、
また、ステージング領域として知られている.インデックスは、作業ツリー内のファイルをRepo内のファイルと比較します.作業ツリーの変更を行うと、インデックスはファイルがコミットされる前に変更されます.
Gitのファイルは、4つのステージのうちの1つでありえました
次のコマンドを実行して、リポジトリの状態を表示できます.
ワーキングディレクトリに存在するが、まだ行われていない.
現在ステージングエリアではまだコミットされていません.
ステージングエリアに追加されているが、変更の対象となった.アイテムはすべての変更後にステージング領域に再追加する必要があります.
ファイルがコミットされ、リモートブランチにプッシュすることができます.
コミットは何のスナップショットですか
コミットは 著者 日付 メッセージ 配布する
Gitの配布は、誰もが自分自身を取得することを意味します
分散バージョン管理システムは、協調的にファイルへの変更を追跡できるシステムです.
これは、同じプロジェクトで他のユーザーと協力することができます.Gitという機能を提供する
gitブランチはツリーの枝に似ています.それは同じ倉庫に属しますが、異なるデータを含むかもしれません.あなたは新しい枝などを作成することができます!ブランチは
Gitのリモートは、すべてのチームメンバーが彼らの変更を交換するのに使用する一般的なリポジトリです.ほとんどの場合、そのようなリモートリポジトリは、githubや内部サーバのようなコードホスティングサービスに格納されます.ローカルリポジトリとは対照的に、リモートは通常、プロジェクトの現在の状態のファイルツリーを提供しません.
リモートリポジトリで動作するようにgitをサポートするバージョン管理プロバイダーが必要です.GitlabとGitthubは人気のあるオプションです.
リモートリポジトリは有用です. 他のユーザーとコードを共有する. プロジェクトのコラボレーション. 他の人々のプロジェクトに貢献すること. あなた自身のリモートレポを作成したり、既存のレポを使用して、私は両方を行う方法を示します.
リモートリポジトリを作成すると、次のコマンドを実行してリモートを作成します
名前 URLはリモートリポジトリの場所を指します. 既存のリモートリポジトリを使用するには、一般的に2つの方法があります.プロジェクトをクローンしたり、コードを直接プッシュすることもできます.その中に書き込みを許可したり、プロジェクトをフォークしたり、貢献したりすることによって、Gitワークフローを使用したりできます.
他人のリポジトリへの貢献
プロジェクトに協力するとき、同期しているのが重要です、そして、Gitはそれをするために異なる方法を提供します.
我々は、同期であなたの仕事を保つために2つの戦略を見ていきます.
これらの2つの一般的な方法gitは、プロジェクトで他のユーザーとのコラボレーション時に同期してファイルを維持するために使用されます.
リモートリポジトリの変更をローカルブランチにプルします.あなたのステージング領域がマージしようとする前に明確であることを確認する必要があります.新しく追加された変更は
rebasingは一つのブランチから別のブランチへの変更を統合しています.
インタラクティブ
これはrebasingファイルのrebasingの種類ですgitの簡単なファイルは簡単なプロセスです.
スカッシュ
このコマンドを使用すると、最後にスカッシュすることができます
単一のメッセージにあなたのコミットメッセージのすべてを結合することによって、あなたのコミットログ/歴史クリーンを維持したいならば、このコマンドのための理想は役に立ちます.
あなたがそれをコミットせずに仕事を保存することができます.あなたが実行して変更を隠して
stash popは最新の変更された変更を取得します.
隠し場
ローカルで考えを実験すること. Amend Revert Cherry Pick
gitコマンドを編集できません
コミットを修正することは、新しいメッセージを使ってコミットされた新しいコピーを作成することを意味します.
The
The
タスクに関連する記述名をコミットアドレスを追加します.コミットの名前はコミットの理由を要約する必要があります. アクティブな音声、簡単な説明を使用します. 私は以下の通りConventional Commits Spec , メッセージをコミットするために人間とマシンで読みやすい意味を追加するための仕様. コミットメッセージを事前にタグで固定されて
公式GITドキュメント Git Tower
初心者のために、それは最初から最後まで記事を読むことをお勧めします.経験豊富なユーザーは、リファレンスガイドとして使用することができます.
Gitとは
公式Gitウェブサイトは、それを定義します
Git is a free and open-source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning-fast performance.
なぜGitを使うべきですか?
構造
Gitプロジェクトは
Repository
, エーWorking Tree
, とStaging Area
.どのようにgitは動作しますか?
ファイルはgitで処理されるこれらのステップを通過しなければなりません
作業木
gitのth th work treeは、すべてのファイル(トラックと追跡されていない)を含んでいる.すべてのファイルとサブディレクトリは、ステージング領域に追加される資格があります.
作業木の変更は
index
Gitで.ステージングエリア
これは、作業ツリーからファイルが
staging area
. Gitはこのファイルを認識し、変更を追跡します.歴史
コミットログとヘッドは、最新のコミットを指します.
GITリポジトリ
として知られているGIT倉庫
repo
プロジェクトのコンテナーです.新しいGit倉庫を初期化することは、隠れたディレクトリをつくります.git/
プロジェクト内では、すべての変更を追跡することができますし、様々なを使用して作業を管理することができますcommands
.訪問することをお勧めします
./git
Gitがどのように表現し、ファイルを管理するかを理解するためのディレクトリとナビゲーションおそらく次のオブジェクトに遭遇するでしょう
HEAD
, index
, logs
, and packed-refs
に.git/
ディレクトリ.GITリポジトリの初期化
git init
Gitの分散された性質は、あなたにローカルのコピーとAを持っている各々で、同じプロジェクトで他と協力する能力を与えますremote
すべての協力者の間で常に同期されているコピー.remote
. 作業木
ワーキングディレクトリは、現在作業中のファイルから構成されます.作業ツリーをファイルを表示したり変更したりできるファイルシステムと考えることができます.
作業ツリーは、現在取り組んでいるファイルから成ります.ファイルは通常、
.git/
フォルダ.インデックス
また、ステージング領域として知られている.インデックスは、作業ツリー内のファイルをRepo内のファイルと比較します.作業ツリーの変更を行うと、インデックスはファイルがコミットされる前に変更されます.
GITの状態
Gitのファイルは、4つのステージのうちの1つでありえました
次のコマンドを実行して、リポジトリの状態を表示できます.
git status
追跡できない
ワーキングディレクトリに存在するが、まだ行われていない.
段階的な
現在ステージングエリアではまだコミットされていません.
修正
ステージングエリアに追加されているが、変更の対象となった.アイテムはすべての変更後にステージング領域に再追加する必要があります.
コミット
ファイルがコミットされ、リモートブランチにプッシュすることができます.
Gitでコミットする
コミットは何のスナップショットですか
working tree
当時のように見えた.コミットは./git/objects/
ディレクトリ.コミットは
Sha1
以下の情報を含むハッシュ.Gitの配布は、誰もが自分自身を取得することを意味します
version
to control
. すべての変更はユーザーが明示的に共有していない限り、ローカルですmerged
などのバージョン管理プロバイダーを使用するGithub or Gitlab .分散バージョン管理システムは、協調的にファイルへの変更を追跡できるシステムです.
これは、同じプロジェクトで他のユーザーと協力することができます.Gitという機能を提供する
branching
あなたの仕事を切り離すために、それは一般的にメイン以外の異なった枝で働くことを勧めます.Gitの分岐
gitブランチはツリーの枝に似ています.それは同じ倉庫に属しますが、異なるデータを含むかもしれません.あなたは新しい枝などを作成することができます!ブランチは
references
.リモートリポジトリ
Gitのリモートは、すべてのチームメンバーが彼らの変更を交換するのに使用する一般的なリポジトリです.ほとんどの場合、そのようなリモートリポジトリは、githubや内部サーバのようなコードホスティングサービスに格納されます.ローカルリポジトリとは対照的に、リモートは通常、プロジェクトの現在の状態のファイルツリーを提供しません.
リモートリポジトリで動作するようにgitをサポートするバージョン管理プロバイダーが必要です.GitlabとGitthubは人気のあるオプションです.
リモートリポジトリは有用です.
リモートリポジトリを作成すると、次のコマンドを実行してリモートを作成します
git remote add <origin>< https://github.com/user/repo.git>
このコマンドはorigin
この場合はクローニング
git clone <origin>< https://github.com/user/repo.git>
これは、このリポジトリのコピーをあなたのマシンに作成します.フォーキング
他人のリポジトリへの貢献
git clone <origin>< https://github.com/user/repo.git>
同期滞在
プロジェクトに協力するとき、同期しているのが重要です、そして、Gitはそれをするために異なる方法を提供します.
我々は、同期であなたの仕事を保つために2つの戦略を見ていきます.
マージとリベース
これらの2つの一般的な方法gitは、プロジェクトで他のユーザーとのコラボレーション時に同期してファイルを維持するために使用されます.
合併する
リモートリポジトリの変更をローカルブランチにプルします.あなたのステージング領域がマージしようとする前に明確であることを確認する必要があります.新しく追加された変更は
merge commit
.ベース
rebasingは一つのブランチから別のブランチへの変更を統合しています.
インタラクティブ
これはrebasingファイルのrebasingの種類ですgitの簡単なファイルは簡単なプロセスです.
スカッシュ
このコマンドを使用すると、最後にスカッシュすることができます
n commits
一つのコミットに.あなたがきちんとしたコミット履歴を持ちたいならば、これは本当によいです.これは通常、最後のコミットメッセージを使用することをお勧めしますが、メッセージを完全にカスタマイズすることができます.
commit 5b937deaf4f6ae6f2239a7ac488ece186ff573d3
Author: `<Your Name> <[email protected]>`
Date: Tue Dec 1 10:41:41 2020 +0000
commit 5b937deaf4f6ae6f2239a7ac488ece186ff573d3
Author: `<Your Name> <[email protected]>`
Date: Tue Dec 1 10:41:41 2020 +0000
commit 5b937deaf4f6ae6f2239a7ac488ece186ff573d3
Author: `<Your Name> <[email protected]>`
Date: Tue Dec 1 10:41:41 2020 +0000
これはGitコマンドではなく、むしろRebaseを通して実装できる概念です.単一のメッセージにあなたのコミットメッセージのすべてを結合することによって、あなたのコミットログ/歴史クリーンを維持したいならば、このコマンドのための理想は役に立ちます.
ゴットスタッシュ
あなたがそれをコミットせずに仕事を保存することができます.あなたが実行して変更を隠して
git stash
現在アクティブなディレクトリ.stash popは最新の変更された変更を取得します.
隠し場
<n>
どこn
が終了した項目です.あなたの隠しリストから特定の変更を適用します.私はまだこのアイデアを使用するときには、まだアイデアをローカルで実験をしながらレビューのコードをプッシュする必要があります.理想的な
その他のgitコマンド
償還する
gitコマンドを編集できません
Sha1
hashには、作成者と作成日などのコミット関連メタデータが含まれます.コミットを修正することは、新しいメッセージを使ってコミットされた新しいコピーを作成することを意味します.
git amend -m commit.
反転する
The
git commit --amend
あなたの最後のコミットを編集することができます.隠し
The
git stash
コマンドで変更を保存できます.より良いコミットメッセージの書き込み
feat:
, fix:
隠そうとする.資源
Reference
この問題について(gitの仕組みを理解する), 我々は、より多くの情報をここで見つけました https://dev.to/junubiman/understanding-how-git-works-1nmaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol