Gitチートシート
序章
開発者とオープンソースソフトウェアメンテナのチームは通常、コラボレーションをサポートする分散バージョン管理システムであるGitを介してプロジェクトを管理します。
このチートシートスタイルガイドは、Gitリポジトリでの作業と共同作業に役立つコマンドのクイックリファレンスを提供します。 Gitをインストールして構成するには、「オープンソースに貢献する方法:Git入門」を必ずお読みください。
このガイドの使用方法:
- このガイドは、自己完結型のコマンドラインスニペットを含むチートシート形式です。
- 完了しようとしているタスクに関連するセクションにジャンプします。
- あなたが見るとき
highlighted text
このガイドのコマンドでは、このテキストは独自のリポジトリ内のコミットとファイルを参照する必要があることに注意してください。
セットアップと初期化
次のコマンドを使用してGitのバージョンを確認します。これにより、Gitがインストールされていることも確認されます。
- git --version
Gitを使用すると、ローカルマシン上のすべてのリポジトリに適用されるいくつかの設定を構成できます。 たとえば、Gitがローカルリポジトリに加えた変更をクレジットするために使用するユーザー名を構成します。
- git config --global user.name “firstname lastname”
各履歴マーカーに関連付ける電子メールアドレスを構成します。
- git config --global user.email “valid-email”
好みのテキストエディタも設定します。
- git config --global core.editor “nano”
現在の作業ディレクトリをGitリポジトリとして初期化できます。 init
:
- git init
リモートでホストされている既存のGitリポジトリをコピーするには、次を使用します git clone
リポジトリのURLまたはサーバーの場所を使用します(後者の場合は、 ssh
):
- git clone https://www.github.com/username/repo-name
現在のGitディレクトリのリモートリポジトリを表示します。
- git remote
より詳細な出力については、 -v
国旗:
- git remote -v
Gitアップストリームを追加します。これはURLにすることも、サーバーでホストすることもできます(後者の場合は、 ssh
):
- git remote add upstream https://www.github.com/username/repo-name
演出
ファイルを変更し、次のコミットに進むようにマークを付けると、そのファイルはステージングされたファイルと見なされます。
追加された、ステージングされていないファイルやステージングされているファイルなど、Gitリポジトリのステータスを確認します。
- git status
変更されたファイルをステージングするには、 add
コマンド。コミット前に複数回実行できます。 次のコミットに含める後続の変更を行う場合は、実行する必要があります add
また。
特定のファイルを指定できます add
:
- git add my_script.py
と .
で始まるファイルを含む、現在のディレクトリ内のすべてのファイルを追加できます。 .
:
- git add .
現在のディレクトリ内のすべてのファイルとサブディレクトリ内のファイルを追加する場合は、 -all
また -A
国旗:
- git add -A
作業ディレクトリ内の変更を保持しながら、ステージングからファイルを削除できます。 reset
:
- git reset my_script.py
コミット
更新をステージングすると、それらをコミットする準備が整います。これにより、リポジトリに加えた変更が記録されます。
ステージングされたファイルをコミットするには、 commit
コミットを追跡できるように、意味のあるコミットメッセージを指定してコマンドを実行します。
- git commit -m "Commit message"
追跡されたすべてのファイルを1つのステップでコミットすることにより、それらのステージングを凝縮できます。
- git commit -am "Commit message"
コミットメッセージを変更する必要がある場合は、 --amend
国旗:
- git commit --amend -m "New commit message"
ブランチ
Gitのブランチは、リポジトリ内のコミットの1つへの移動可能なポインターであり、作業を分離し、機能の開発と統合を管理することができます。 Gitのドキュメントを読むと、ブランチの詳細を知ることができます。
現在のすべてのブランチを branch
指図。 アスタリスク(*
)現在アクティブなブランチの横に表示されます:
- git branch
新しいブランチを作成します。 新しいブランチに切り替えるまで、現在アクティブなブランチに留まります。
- git branch new-branch
既存のブランチに切り替えて、現在の作業ディレクトリにチェックアウトします。
- git checkout another-branch
新しいブランチの作成とチェックアウトを統合するには、 -b
国旗:
- git checkout -b new-branch
ブランチ名の名前を変更します。
- git branch -m current-branch-name new-branch-name
指定したブランチの履歴を、現在作業しているブランチにマージします。
- git merge branch-name
競合がある場合は、マージを中止します。
- git merge --abort
マージする特定のコミットを選択することもできます cherry-pick
特定のコミットを参照する文字列を使用します。
- git cherry-pick f7649d0
ブランチをマージし、ブランチが不要になったら、次のように削除できます。
- git branch -d branch-name
ブランチをmainにマージしていないが、それを削除したい場合は、ブランチをforce削除できます。
- git branch -D branch-name
コラボレーションと更新
リモートアップストリームなどの別のリポジトリから変更をダウンロードするには、次を使用します fetch
:
- git fetch upstream
フェッチされたコミットをマージします。 一部のリポジトリはを使用する場合があることに注意してください master
それ以外の main
:
- git merge upstream/main
ローカルブランチコミットをリモートリポジトリブランチにプッシュまたは送信します。
- git push origin main
トラッキングリモートブランチからコミットをフェッチしてマージします。
- git pull
検査
現在アクティブなブランチのコミット履歴を表示します。
- git log
特定のファイルを変更したコミットを表示します。 これは、ファイルの名前変更に関係なく、ファイルに従います。
- git log --follow my_script.py
一方のブランチにあり、もう一方のブランチにはないコミットを表示します。 これはコミットを表示します a-branch
ない b-branch
:
- git log a-branch..b-branch
参照ログを見る(reflog
)ブランチのヒントやその他の参照がリポジトリ内で最後に更新されたのはいつかを確認します。
- git reflog
コミット文字列またはハッシュを介して、Git内のオブジェクトをより人間が読める形式で表示します。
- git show de754f5
変更を表示
The git diff
コマンドは、コミット、ブランチなどの間の変更を表示します。 Gitのドキュメントで詳細を読むことができます。
ステージング領域にある変更されたファイルを比較します。
- git diff --staged
内容の差分を表示する a-branch
ではありません b-branch
:
- git diff a-branch..b-branch
2つの特定のコミット間の差分を表示します。
- git diff 61ce3e6..e221d9c
プロジェクトからファイルを削除してパスの変更を追跡し、この削除をコミット用にステージングします。
- git rm file
または、既存のファイルパスを変更してから、移動をステージングします。
- git mv existing-path new-path
コミットログをチェックして、パスが移動されていないかどうかを確認します。
- git log --stat -M
隠し場所
コードに変更を加えたことに気付く場合もありますが、終了する前に、別の作業を開始する必要があります。 これまでに行った変更をコミットする準備はまだ整っていませんが、作業を失いたくありません。 The git stash
コマンドを使用すると、ローカルの変更を保存して、最新の作業ディレクトリに戻すことができます。 HEAD
専念。
あなたの現在の仕事を隠してください:
- git stash
あなたが現在隠しているものを見てください:
- git stash list
あなたの隠し場所は名前が付けられます stash@{0}
, stash@{1}
、 等々。
特定の隠し場所に関する情報を表示します。
- git stash show stash@{0}
スタッシュを保持したまま、現在のスタッシュ内のファイルをスタッシュから取り出すには、次を使用します。 apply
:
- git stash apply stash@{0}
ファイルを隠し場所から取り出したいが、隠し場所が不要になった場合は、次を使用します。 pop
:
- git stash pop stash@{0}
特定の隠し場所に保存されたファイルが不要になった場合は、次のことができます。 drop
隠し場所:
- git stash drop stash@{0}
複数のスタッシュを保存していて、それらを使用する必要がなくなった場合は、次を使用できます。 clear
それらを削除するには:
- git stash clear
ファイルを無視する
ローカルのGitディレクトリにファイルを保持したいが、プロジェクトにコミットしたくない場合は、これらのファイルを .gitignore
競合を引き起こさないようにファイルします。
nanoなどのテキストエディタを使用して、ファイルをに追加します .gitignore
ファイル:
- nano .gitignore
の例を見るには .gitignore
ファイルについては、GitHubの.gitignoreテンプレートリポジトリをご覧ください。
リベース
リベースを使用すると、ベースとなるコミットを変更することでブランチを移動できます。 リベースを使用すると、コミットを押しつぶしたり、言い換えたりできます。
リベースしたいコミットの数を呼び出すことで、リベースを開始できます(5
以下の場合):
- git rebase -i HEAD~5
または、特定のコミット文字列またはハッシュに基づいてリベースすることもできます。
- git rebase -i 074a4e5
コミットを破棄または言い換えたら、プロジェクトのアップストリームコードの最新バージョンに加えてブランチのリベースを完了することができます。 一部のリポジトリはを使用する場合があることに注意してください master
それ以外の main
:
- git rebase upstream/main
リベースと更新の詳細については、プルリクエストのリベースと更新の方法を参照してください。これは、あらゆるタイプのコミットにも適用できます。
元に戻すとリセット
を使用して、特定のコミットで行った変更を元に戻すことができます。 revert
. これを実現するには、作業ツリーをクリーンにする必要があります。
- git revert 1fc6665
リベース後も含めて、作業ツリーをリセットする必要がある場合があります。 次のコマンドを使用して、特定のコミットにリセットし、すべての変更を削除できます。
- git reset --hard 1fc6665
最後の既知の競合しないコミットをオリジンリポジトリに強制的にプッシュするには、次を使用する必要があります --force
:
警告:メインに強制的にプッシュします(場合によっては master
)本当に重要な理由がない限り、ブランチはしばしば眉をひそめます。 独自のリポジトリで作業する場合は慎重に使用し、共同作業する場合はこれを回避するようにしてください。
- git push --force origin main
追跡されていないローカルファイルとサブディレクトリをGitディレクトリから削除して、クリーンに動作するブランチを作成するには、次のコマンドを使用できます。 git clean
:
- git clean -f -d
現在のアップストリームメインブランチのように見えるようにローカルリポジトリを変更する必要がある場合(つまり、競合が多すぎる場合)、ハードリセットを実行できます。
注:このコマンドを実行すると、ローカルリポジトリがアップストリームとまったく同じように表示されます。 行ったがアップストリームにプルされなかったコミットはすべて破棄されます。
- git reset --hard upstream/main
結論
このガイドでは、リポジトリを管理したり、ソフトウェアで共同作業したりするときに使用する可能性のある、より一般的なGitコマンドのいくつかについて説明します。
オープンソースソフトウェアとコラボレーションの詳細については、オープンソース入門チュートリアルシリーズをご覧ください。
Gitでの作業の一部として役立つと思われるコマンドやバリエーションは他にもたくさんあります。 使用可能なすべてのオプションの詳細については、以下を実行して有用な情報を受け取ることができます。
- git --help
公式GitWebサイトから、Gitの詳細を読んだり、Gitのドキュメントを確認したりすることもできます。