よく使うコマンドを素早く調べる
この記事では、一般的なGitコマンドを開発プロセスで整理します。サンプル内の<branch>、<commit>、<file>などは、実際のブランチ名、コミットハッシュ、ファイルパスに置き換える必要があります。
履歴を変更するコマンドまたはファイルを削除するコマンドを実行する前に、git statusを実行し、必要に応じてgit stash -uを使用して現在の変更を一時的に保存することをお勧めします。
Gitワークフロー
flowchart LR
A[工作区] -->|git add| B[暂存区]
B -->|git commit| C[本地仓库]
C -->|git push| D[远程仓库]
D -->|git fetch / git pull| C
B -->|git restore --staged| A
C -->|git restore / git reset| A
| ゾーン | 説明 | 共通コマンド |
|---|---|---|
| ワークスペースWorkspace | 現在編集中のファイル | git diff``git restore |
| 一時的な領域 | 次回の提出準備に含める内容 | git add``git diff--staged |
| ローカル倉庫の | コミットされたバージョン履歴 | git commit``git log |
| リモート倉庫。 | GitHub、GitLabなどのリモートコピー | git fetch、git pull、git push |
リポジトリの初期化と複製
ローカルリポジトリの初期化
現在のディレクトリでGitリポジトリを初期化する
git init
初期化してデフォルトブランチをmainに指定
git init -b main
リモート·ウェアハウスのクローン作成
git clone https://github.com/<owner>/<repo>.git
git clone git@github.com:<owner>/<repo>.git
指定したディレクトリへのクローン
git clone <repository-url> <directory>
最新のコードのみが必要なシナリオに適した、最後のコミットのみをクローンする
git clone --depth 1 <repository-url>
Gitの設定
グローバルユーザー名の
git config --global user.name "Your Name"
グローバルメールボックスのセットアップ
git config --global user.email "you@example.com"
新規ウェアハウスのデフォルトブランチをmainに設定
git config --global init.defaultBranch main
すべての構成とそのソースを表示
git config --list --show-origin
現在のウェアハウスで有効なユーザー名とメールボックスの表示
git config user.name
git config user.email
--globalを削除すると、構成は現在の倉庫でのみ有効になります。グローバル構成は、ウェアハウスレベル構成によって上書きされます。
倉庫ステータスの表示
ワークスペースおよびステックスペースのステータスの表示
git status
ステータスおよびの分岐を形式で表示
git status -sb
ステージングファイル
指定ファイルのステージング
git add <file>
指定ディレクトリのステージング
git add <directory>
カレントディレクトリ内のすべての追加、変更、削除をステージング
git add .
ステージングするコードブロックの対話型選択
git add -p
スクラッチ領域からファイルを除去するが、ワーク領域の修正は維持する
git restore --staged <file>
ファイルを削除し、削除操作をスクラッチ領域に追加
git rm <file>
ファイルのトレースを停止するが、ローカル·ファイルは保持
git rm --cached <file>
ファイルの移動または名前の変更
git mv <old-path> <new-path>
コミットの作成
エディタを开く発行指示の移入
git commit
提出指示の直接入力
git commit -m "docs: update Git command guide"
追跡されたファイルのすべての変更をステージングし、コミットする
# 不包含尚未被 Git 跟踪的新文件
git commit -am "fix: update tracked files"
最后のコミットの変更およびコミットの指示の再集
git commit --amend
最新の提出物に新しい一時的な内容を追加し、提出物の説明を残す
git commit --amend --no-edit
git commit --amendは新しいコミットハッシュを作成します。すでにプッシュされ、他の人が使用しているコミットは、変更できません。
オペレーションブランチ
分岐の表示
ローカルブランチを表示
git branch
ローカルおよびリモートブランチの表示
git branch -a
ブランチとその上流追跡関係の表示
git branch -vv
現在のブランチ名の表示
git branch --show-current
分岐の作成と切り替え
現在のコミットから新しいブランチを作成しますが、切り替えはしません
git branch <branch>
指定した発行、分岐またはラベルからの新規分岐の作成
git branch <branch> <start-point>
既存の支店に切り替える
git switch <branch>
新しいブランチを作成してすぐに切り替える
git switch -c <new-branch>
指定した開始点から新しいブランチを作成し、すぐに切り替える
git switch -c <new-branch> <start-point>
前のブランチに戻る
git switch -
分岐の名前変更と削除
現在のブランチ名の変更
git branch -m <new-name>
指定した分岐の名前変更
git branch -m <old-name> <new-name>
マージされたローカルブランチの削除
git branch -d <branch>
マージ済みかどうかをチェックせずにローカルブランチを強制削除
git branch -D <branch>
リモート·ブランチの削除
git push <remote> --delete <branch>
リモート倉庫の管理
リモートウェアの名前とアドレスの表示
git remote -v
リモートウェアハウスを追加
git remote add origin <repository-url>
Forkプロジェクトの上流倉庫の追加
git remote add upstream <upstream-url>
リモートウェアアドレスの変更
git remote set-url origin <new-url>
リモート·ウェアハウスの名前の変更
git remote rename <old-name> <new-name>
リモートウェアハウス構成の削除
git remote remove <remote>
リモート·ウェアハウスの詳細の表示
git remote show origin
取得、プル、プッシュ
現在のブランチを変更せずに、リモートリポジトリの新しいコミットと参照を取得する
git fetch origin
すべてのリモートリポジトリを取得し、削除されたリモートブランチ参照をクリーンアップする
git fetch --all --prune
現在の分岐に対応するリモート分岐をプルしてマージする
git pull
早送りマージのみを許可し、マージコミットの自動生成を回避
git pull --ff-only
プル後にrebaseを使用したローカルコミットの整理
git pull --rebase
最初にブランチをプッシュし、上流追跡関係を確立する
git push -u origin <branch>
現在のブランチのプッシュ
git push
すべてのローカルタグをプッシュする
git push origin --tags
通常のコラボレーションではgit push --forceを直接使用しないでください。リモート履歴を上書きする必要がある場合は、git push --force-with-leaseが優先されます。git push --force-with-leaseは、リモートブランチで予期しない更新が発生した場合に上書きを拒否します。
分岐のマージ
指定した分岐を現在の分岐にマージ
git merge <branch>
早送りが可能な場合でも、マージコミットを1つ作成
git merge --no-ff <branch>
競合が発生した後に競合ファイルを表示する
git status
競合が解決され、ファイルがステージングされたら、マージを完了する
git add <resolved-file>
git commit
現在の連結を破棄し、連結前の状態に戻す
git merge --abort
バリアントブランチ
の分岐のコミットを宛先分岐に再
git rebase <base-branch>
インタラクティブな整理最新 3 件の投稿
git rebase -i HEAD~3
コンフリクトを解決し、ステージング後にベース変更を続行
git add <resolved-file>
git rebase --continue
現在適用できないコミットのスキップ
git rebase --skip
変基を放棄して元の状態に戻す
git rebase --abort
Rebaseはコミット履歴を書き換えます。公開され、他の人が開発した共有ブランチにはrebaseを実行しないでください。
提出物の選定
别の分岐から指定したコミットをの分岐に
git cherry-pick <commit>
競合を解決した後の継続 cherry-pick
git add <resolved-file>
git cherry-pick --continue
Cherry-Pickを削除
git cherry-pick --abort
ワークスペースおよびスクラッチ領域の変更を取り消す
指定したファイルがステージングされていない変更を破棄する
git restore <file>
指定したコミットのバージョンにファイルを復元する
git restore --source=<commit> <file>
ステージングを解除するが、ワークスペースの変更は保持する
git restore --staged <file>
ステージング領域とワークスペースの両方をHEADにリストア
# 会丢弃所有未提交修改
git restore --staged --worktree :/
提出の取り消し
バックコミットの作成
新しいコミットを作成し、最後のコミットの変更を取り消す
git revert HEAD
新しいコミットを作成し、コミットされた変更を取り消す
git revert <commit>
git revertは元のコミットを削除せず、共有リポジトリにプッシュされた履歴に適しています。
現在の分岐ポインタの移動
最後のコミットを取り消し、変更を保持し、ステージング状態を維持する
git reset --soft HEAD~1
最新のコミットを取り消し、ワークスペースの変更は保持するがステージングを解除する
git reset HEAD~1
の分岐、ステージ
git reset --hard <commit>
+++危険な操作:reset --hardとclean
git reset --hardでは、ワークスペースとステージング領域のコミットされていない変更が破棄されます。
git clean -fdは、追跡されていないファイルとディレクトリを完全に削除します。実行する前にプレビューコマンドを使用する
削除されるコンテンツのみプレビュー
git clean -nd
誤りを確認してから実行する
git clean -fd
+++
reflogを使用したエラー操作のリカバリ
HEADおよび分岐ポインタのローカル移動記録の表示
git reflog
誤動作前のコミットからリカバリ·ブランチを作成し、セキュリティを強化
git switch -c recovery/<name> <commit>
コミットが正しくないことを確認した後、現在のブランチを直接過去に戻すこともできます
git reset --hard <commit>
reflogはローカルレコードであり、pushとともにアップロードされず、他のコンピュータから操作レコードを直接復元することはできません。
一時保管の変更
追跡されたファイルの変更を保存する
git stash push -m "WIP: description"
未追跡ファイルの同時保存
git stash push -u -m "WIP: description"
倉庫リストの表示
git stash list
最新の保管時の詳細な差異を表示
git stash show -p
最後の保存を適用してリストから削除する
git stash pop
指定保管を適用しますが、リストには残ります
git stash apply stash@{0}
指定ストレージの削除
git stash drop stash@{0}
すべての倉庫を空にする
git stash clear
コミット履歴の表示
コミット履歴全体を見る
git log
単一行、分岐図、参照装飾を使用した全履歴の表示
git log --oneline --graph --decorate --all
最新 10 件の投稿を見る
git log -10 --oneline
指定した著者の提出を表示する
git log --author="<name>"
指定した時間以降のコミットの表示
git log --since="2026-01-01"
ファイル履歴の表示と名前の変更の追跡
git log --follow -- <file>
指定したコミットの内容と相違点の表示
git show <commit>
コードの行が最後に変更されたコミットを確認する
git blame -L <start>,<end> <file>
二分探索を使用した位置
git bisectは、履歴の中間点を継続的にテストすることで、初めて問題を導入するコミットを特定します。
2 分検索開始
git bisect start
現在のコミットを問題としてマークする
git bisect bad
既知の正常な履歴コミットを正常としてマークする
git bisect good <good-commit>
Gitは自動的に中間コミットに切り替わります。テスト後のマークアップ:
現在のコミットは正常
git bisect good
現在提出中の問題
git bisect bad
現在のコミットはテストできません。スキップ
git bisect skip
現在のバイナリ検索プロセスを確認する
git bisect log
gitkで現在のスコープを視覚化するにはgitkのネイティブインストールが必要
git bisect visualize
二分探索を終了し、開始前の分岐を返す
git bisect reset
テストスクリプトを使用した二分検索の自動化
# 脚本退出码为 0 表示正常,1~127(除 125)表示有问题,125 表示跳过
git bisect run <test-command>
ラベルの管理
すべてのラベルを表示
git tag
ノート·ラベルの作成
git tag -a v1.0.0 -m "Release v1.0.0"
指定したコミットのラベルの作成
git tag -a v1.0.0 <commit> -m "Release v1.0.0"
ラベル情報の表示
git show v1.0.0
指定されたラベルのプッシュ
git push origin v1.0.0
ローカルタグの削除
git tag -d v1.0.0
リモート·ラベルの削除
git push origin --delete v1.0.0
Forkのアップストリームウェアハウスの同期
初回設定
# origin 指向自己的 Fork,upstream 指向原仓库
git remote add upstream <upstream-url>
git remote -v
毎日の同期化
git fetch upstream --prune
git switch main
git merge --ff-only upstream/main
git push origin main
ローカルmainに独自のコミットが存在し、マージを早送りできない場合は、コミットが共有されていないことを確認した後で次のように使用できます。
git fetch upstream --prune
git switch main
git rebase upstream/main
git push --force-with-lease origin main
2 番目の方法は、Fork 内のmainブランチの履歴を書き換えます。複数の人がブランチを使用する場合は、リベースよりもマージを優先します。
.gitignoreで無視されるファイルの削除
1.現在のディレクトリ内のすべてのファイルのGit 追跡ステータスを削除する(ローカルファイルは削除しない)
git rm -r --cached .
2.すべてのファイルをスクラッチ領域に再追加します(Gitは現在の.gitignoreルールに従って厳密にフィルタリングされます)
git add .
3.新しいクリーンステータスを提出する
git commit -m "chore: 重新应用 .gitignore 规则并清理缓存"
気に入ったならばコメントを残してくださいね~