jinzhe

jinzhe

github
email

Git入門

Git は分散型バージョン管理システムです。

Note

- バージョン管理は、その名の通り、履歴を記録し、必要な場合にはロールバックできます。
- 分散型の概念は、ローカルリポジトリが追加されることで、各ローカルリポジトリにはすべてのバージョンが存在し、途中でネットワークに接続する必要はありません(ただし、最終的にはコードを中央リポジトリに提出する必要があります)。

add#

add の目的は、作業ディレクトリでの変更をステージングエリアにコミットし、ファイル内の変更を監視することです。

git add <ファイ>

ファイルの状態は「未追跡」から「ステージング済み」に変わります

Warning

add はファイルの変更を追加するものであり、ファイル自体ではありません!

クイック add#

すべてのファイルをステージングする

git add .

commit#

commit の目的は、ステージングエリアのコードをローカルリポジトリにコミットすることです。

git commit

クイック commit#

git commit -m <コミットメッセー>

push#

ローカルをリモートリポジトリにプッシュすることで、現在のブランチとそのパス上のcommitを一緒にリモートリポジトリに送信します。

git push <ホスト> <ブランチ>

クイック push#

すべてのローカルブランチをプッシュする。

 git push

log#

commit が完了すると、コミットの SHA-1、コミットの作成者、コミットの時間が記録されます。

git log

変更内容の log を表示する#

詳細なファイルの変更内容を表示します。

git log -p

簡単な log を表示する#

ファイルの変更統計のみを表示します。

git log --stat

show#

現在の commit 情報のみを表示する#

git show

特定の commit 情報を表示する#

git show SHA-1

特定の commit 情報内のファイルを表示する#

git show SHA-1 <ファイ>

pull#

git pullは実際にはgit fetchgit mergeの組み合わせであり、ターゲットブランチのすべての commit と現在の commit をマージして新しい commit を生成します。

git pull <ホスト> <ブランチ>

pull 操作は一定程度自動的にマージを行います:

  • 1 つのブランチで A ファイルを変更し、別のブランチで B ファイルを変更した場合、マージ後に両方のファイルが変更されます。
  • 1 つのブランチで A ファイルの 1 行目を変更し、別のブランチで A ファイルの 2 行目を変更した場合、マージ後に A ファイルの 1 行目と 2 行目が変更されます。
  • ただし、1 つのブランチで A ファイルの 1 行目を変更し、別のブランチでも A ファイルの 1 行目を変更した場合、問題が発生し、手動で競合を解決する必要があります。

競合の解決が完了したら、再度 add、commit する必要があります。この時、git は自動的に log 情報を埋めてくれるので、そのままコミットすればよいです。

branch#

git と他のバージョン管理システムの主な違いは、git にはbranchの概念があることです。branchは、commits への参照です。

参照は、commit のショートカットです。私たちはそれぞれのcommitに SHA-1 のハッシュ値があることを見てきましたが、この値は非常に低い重複率を持っており、上の例では7800baを使用して前回の commit を代表することができます。HEAD -> mastergithub/masterなどの後ろにあるものも、この commit への参照を指しています。

HEAD:現在のブランチの参照#

現在のブランチの参照は、現在の作業ディレクトリに対応するcommitを指します。コミットが行われると、HEAD も自動的に現在のcommitを指すようになります。つまり、現在のcommitがどこにあるかに関係なく、HEAD を使用して現在のcommitを操作できます。

branch:ブランチ#

HEADcommitだけでなく、branchを指すこともできます。branchを指している場合、間接的に対応するcommitを指しています。現在のブランチがコミットされると、HEADは対応するbranchを一緒に移動させます。

main:デフォルトのブランチ#

main ブランチは、プロジェクトがクローンされたときにデフォルトで作成されるものです。

Note

すべてのブランチは平等です。

ブランチの操作#

ブランチの作成#

git branch <ブランチ>

ブランチの切り替え#

git checkout <ブランチ>

これは少し手間がかかるので、2 つのステップを組み合わせることができます:
ブランチを作成してすぐに切り替える。

git checkout -b <ブランチ>

ブランチの削除#

git branch -d <ブランチ>

Note

- 削除する場合は、他のブランチに切り替えてから削除してください。
- ブランチの削除は、commit への参照の削除であり、ブランチのコミットは削除されません。
-master とマージされていないブランチは削除できません(セキュリティ上の理由から)。大文字の-Dに変更すると削除できます。

ワークフロー:フィーチャーブランチング#

最も一般的なワークフローです。

  1. プロジェクトで機能を開発する必要がある場合、プロジェクト上で新しいブランチを作成します。
git checkout -b zhang
  1. 開発が完了したら、リモートブランチにプッシュできます:
git add .
git commit -m "開発完了"
git push origin zhang
  1. その後、同僚にコードをレビューしてもらうように伝えます。同僚が OK と言ったら、同僚は次のようにします:
git pull
git checkout zhang
  1. 同僚が問題がないと言ったら、zhang を master にマージします。 もし問題があると言われた場合は、コードを修正して手順2を繰り返します。
git checkout master
git pull
git merge zhang

最後にリモートリポジトリにプッシュし、ローカル / リモートブランチを削除します:

git push
git branch -d zhang
git push origin -d zhang
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。