Git总结

文件存储区域

    • ワーキングツリー

 

    • インデックス(ステージ)

 

    ローカルリポジトリ

工作区

    作業しているディレクトリ領域 実際のファイルやディレクトリのこと

索引(阶段)

    コミットを行う対象のファイルを選んで一時登録しておく領域

本地存储库

    ファイルのバージョン情報を管理する領域

分支

    コミットを指すポインタ(コミットIDを記録したポインタ)

首部

    • 現在作業しているブランチを指すポインタ

 

    • HEAD~ や HEAD^ は一つ前のコミットを指す

 

    HEAD~2 HEAD~3 という書き方で複数前のコミットを指すことができる

基础命令

状态

    ファイル保存領域の状態を表示する
# 基本
git status

# 簡潔に表示する
git status -s

登录

    コミット履歴を確認する
# 一行で表示
git log --oneline

# 変更差分を表示する
git log -p <file>

# 表示するコミット数を限定する
git log -n コミット数

增加

    ワーキングツリーからインデックスに登録する(ステージング)
# ワーキングツリーで新規作成、変更されたファイルをステージング
git add .

# 指定したファイルをステージング
git add <file>

# ブランチ

犯罪

    インデックスからローカルリポジトリに変更履歴を登録する
# エディタを起動せずにコミットする
git commit -m "コミットメッセージ"

# エディタにファイルの変更差分を表示してコミットする
git commit -v

# 直前のコミットを上書きする
# リモートリポジトリにPushされたコミットにはやらないこと
git commit --amend

不同

    • ファイル同士の差分を表示する

 

    オプションによって比較するファイルが変わる
# オプションなし ワーキングツリーとインデックスの差分
# git add する前の差分確認に
git diff

# インデックスとHEADの差分
# git commit する前の差分確認に
git diff --cached

# ワーキングツリーとHEADの差分
# 前回コミットからどれくれい編集したかの差分確認に
git diff HEAD

结账

    • ブランチを切り替える

 

    インデックスをもとにワーキングツリーのファイルを復元する
# 指定したブランチに切り替える 実際は、HEADの指す先が変わる
git checkout <branch>

# ブランチを新規作成して切り替える
git checkout -b <branch>

# 指定したファイルを復元する 実際は、ステージのインデックスにあるファイル情報を、ワーキングツリーのファイルに反映させる
git checkout -- <file>

重置

    • HEAD の位置を変更するコマンド

 

    • オプションによってインデックス、ワーキングツリーの内容も変更できる

 

    • –soft : HEAD位置のみを変更する インデックス、ワーキングツリーには影響なし

 

    • –mixed : HEAD位置とインデックスを変更する ワーキングツリーには影響なし (オプション指定なしの場合もmixed扱い)

 

    –hard : HEAD位置とインデックスとワーキングツリーを変更する
# HEAD位置を一つ前のコミットへ変更する
# ワーキングツリーの状態をそのままに、直前コミットを取り消したい場合に使用する
git reset --soft HEAD~

# HEAD位置とインデックスをHEADが指す状態に戻す
# addを取り消すコマンドとして使用する
git reset HEAD

# HEAD位置とインデックスとワーキングツリーをHEADが指すコミットに戻す
git reset --hard HEAD

遥远的

    リモートリポジトリに関する操作
# リモート名と対応URLを表示
git remote -v

# 接続するリモートリポジトリを追加
git remote add <remote> <url>

# リモートの詳細情報を表示
git remote show <remote>

# リモート名をリネームする
git remote rename <old-name> <new-name>

# リモートリポジトリ情報を削除する
git remote rm <remote>

分支

    ブランチに関する操作
# ブランチを一覧表示する
git branch

# ブランチを新規作成する
# HEADは移動しない
git branch <branch>

# 作業中のブランチ名を変更する
git branch -m <new branch name>

# ブランチを削除する
# masterにマージされていないcommitがある場合削除されない
git branch -d <branch>

# ブランチを削除する
# 強制削除
git branch -D <branch>

取回

    • リモートリポジトリから情報を取得する

 

    ワーキングツリーには影響がない ワーキングツリーに情報を反映するには merge を使う
# リモートリポジトリ(orijin)から情報を取得する
git fetch orijin

# リモートリポジトリ、ブランチまで指定して取得できる
git fetch <remote> <branch>

合并

    ブランチの変更内容を統合する
# 作業中のブランチに統合する
git merge <branch>


快速前进 sù

从A分支分叉出B分支,并对B分支进行提交,然后将其切换到A分支并进行合并。
当A分支没有变更时,执行的合并称为快速向前合并(fast forward merge)。
A分支指向的提交指针只需要移动到B分支的最新提交。
换句话说,A分支和B分支指向的最新提交指向相同的提交状态。

冲突

当在A分支和B分支对同一文件的同一行进行修正并合并时,会发生冲突。Git无法确定哪个修正应优先选择。

避免冲突的运营规则

    • 複数人で同じファイルを変更しない

 

    • pull や merge する前に変更中の状態をなくしておく(commitやstashをしておく)

 

    pullするときは、pullするブランチに移動してからpullする

拉 (lā)

    リモートリポジトリから情報を取得し、マージする
# リモートリポジトリからブランチの履歴情報を取得する
# fetch + merge
git pull <remote> <branch>

# fetch + rebase
git pull --rebase <remote> <branch>

变基

    • 履歴をキレイに整える形で変更を統合する

 

    コミットをやり直し、削除や順番の入れ替え
# 現在作業中のブランチを指定したブランチに統合する
git rebase <branch>

# 最新コミットから指定したコミットまでを構築し直す
# エディタが起動し、対話式リベースモードに入る
git rebase -i <commit>

# 対話式リベースモードでのコマンド
pick = コミットをそのまま採用(修正なし)
reword = コミットを採用するが、コミットメッセージを変更
edit = コミット採用するが、ファイルの修正をする
squash = 一個前のコミットと合体させる
fixup = コミットメッセージを変更しない点以外、squashと同じ
exec = shellでコマンドを実行する
drop = コミットを削除

また、コミットの記載順序を入れ替えることで
コミットの順番を本当に入れ替えることできる

关于rebase的注意事项

在中国,请勿将推送到远程仓库的提交进行rebase操作。

通过rebase的图解说明,使资料易于理解
解释Git的合并过程

标签

    • タグに関する操作

 

    • タグとは、コミットを参照しやすくるためにエイリアスをつけること

 

    タグには2種類あり、注釈付きのタグと、軽量版のタグがある
# 全てのタグを表示する
git tag

# パターンを指定してタグを検索表示する
git tag -l "検索文字列"

# 注釈付きタグを作成する
# 注釈付きタグは、タグ名、メッセージ、作成者の署名が付けられる
# エディタが起動しメッセージが入力できる
# コミットを指定しない場合、現在作業中ブランチの最新コミットにタグが付く
git tag -a <tag-name> <commit>

# 軽量版タグを作成する
# 軽量版タグは、タグ名のみ付けられる
git tag <tag-name> <commit>

# タグの詳細を表示する場合は show を使う
git show <tag-name>

隐藏

    ワーキングツリーとインデックスの作業内容を一時退避する
# ワーキングツリーとインデックスの内容をstash領域に保存する
# オプション save は省略可能
git stash save

# 保管状態の一覧で表示する
git stash list

# 指定した退避内容をワーキングツリーに復元する
# インデックスまでは復元されない
git stash apply stash@{0}

# ワーキングツリーとインデックスを復元する
git stash apply --index stash@{0}

# 指定した退避内容を削除する
# スタッシュを指定しない場合、最新の退避内容を削除する
git stash drop stash@{0}

# 全ての退避内容を削除する
git stash clear


请参考

不再害怕Git!完全掌握必备的Git团队开发技巧
Git超级总结
稍微有些理解git diff的用法
总结我使用的Git命令 温习篇
也来总结一下git reset的相关内容

广告
将在 10 秒后关闭
bannerAds