Git 速查表
查询状态系统
-
- git status : 状態の確認
-
- git show [ID] : 変更の確認
-
- git log : ログ確認
-
- git log –decorate : HEADつきのログを表示
-
- git log –oneline : ワンラインのログ表示
-
- git log –graph : ログをグラフ表示
git log [branch] : 指定branchのログを見る
git config -l : gitの設定を表示
git cat-file -p [hash] : commit情報を確認
git diff [id1] [id2] : 差分を確認
Git 远程系
-
- ※originはリモートリポジトリの変数名のようなもの
-
- git remote : リモートの名前を表示
-
- git remote rm [name] : 設定削除
-
- git remote -v : originの向き先を確認
- git remote prune origin : リモートリポジトリを更新(state=消えていないブランチを消す)
更改原始设定
-
- git remote add [name] [remote repository] : リモートリポジトリの名前設定を付追加
- git branch –set-upstream master [name] : originの変更
Git 初始化
-
- git init : 新規リポジトリの作成
-
- git init –bare —shared : bareリポジトリの作成
作業ファイルがなく(裸)、管理ファイル(更新情報)のみ
サーバー側のリモートリポジトリとして扱われる
sharedオプションで共有設定
bareの前にハイフンを二つつけないと内部構造がおかしくなる
変更状態のみ保持しているので、実際に作業したファイルは直接みれない
ワーキングディレクトリをもたない
请进行Git克隆操作。
-
- git clone [対象リポジトリのuri] [clone場所] : cloneを作成
clone場所に注意
将文件添加至Git暂存区
- git add [file] : インデックスにあげる
提交 Git 提交
-
- git commit -m “message” [file] : コミットを行う
mオプションをつけることで単一コメントが可能
新規ファイルやディレクトリも、add commitしない限り反映されない
git commit -am [file] : 一度addしたファイルに対して、addとcommitとを同時に行う
git commit —amend : 最新のcommit Messageを変更
editerで編集することができる
HashIDも変化するのでpullやpushする際は注意が必要
将更改推送到远程仓库
-
- git push [リモートリポジトリのパス] [ローカルのブランチ名]:[リモートのブランチ名(正しくは特殊変数refspec)]
他リポジトリのbranchに変更を加える
引数の両ブランチ名が同じなら[branch]を一つ書くだけで省略できる
引数省略するとgitの設定により挙動が変わる場合があるので注意
cloneしてきたリポジトリなら、リモートリポジトリのパスをoriginに省略できる
–allオプション(宣言位置はどこでも)で、全てのローカルブランチをpushできる
エラーメッセージ:fast-forwardsは、最新ということを示す
指定branchがremoteにない場合は新規作成される
git push [remote] :[remote branch] で空を送る =remote branchの削除が可能
Git 获取 – 拉取
-
- git fetch [remote repo] [branch]
他リポジトリのbranchから追跡ブランチを取得
fetchで取得したブランチのcommitは、名前のないブランチとして取り込まれる
これは、FETCH_HEADというブランチ名でチェックアウトできる
取得ブランチを取り込みたい場合はこのブランチをmergeするか、改めてpullすればいい
[branch]を省略で全てのbranchを取得
push時にconfrictが起きる状態で行うと、勝枝を増やしてくれる(= branchの取得)
これは、リモートリポジトリの情報をローカルに持ってきているため
git merge origin/master でmergingモードに入ることができconfrictを解消する必要はある
拉操作用于从远程存储库获取最新的更改。
-
- git pull [リモートリポジトリのパス] [リモートのブランチ名(正しくは特殊変数refspec)]
他branchの変更をカレントbranchに取り込む
pull自体、fetchのあとにmergeをするようなもの
branchを省略した場合は、カレントbranchに[branch]がfetch → mergeされる(remote branchの追跡ブランチがローカルに残らない)
指定した[branch]に変更が加わるわけではないので注意
エラーメッセージ:non-fast-forwardは、最新でないという意味
git pull –rebase
pullした時の挙動が fetch → mergeから fetch → rebaseになる
合并的命令是 “git merge”。
-
- git merge [branch]
カレントbranchに、選択branchを統合する
一旦发生冲突
-
- 自分で該当箇所を編集 → add → commitすればいい
confrict時のcommitメッセは残らないままでいい(再commit時のメッセージで統合されるので)
push時のconfrictに関して、解消して再度pushをすれば、相手側で取り込む(pull)ものはconfrict解消済みのものを取り込める
pull時のmerge messageでvimが開く場合は、「mergeを勝手にしたのでmerge messageを編集しろ」という意味
当想仅在合并时选择一方的冲突解决方式时
-
- git checkout –ours [file] : checkoutしているbranch側にあわせる
-
- git checkout –theirs [file] : mergeされたbranch側にあわせる
confrict状態であれば、何回でも繰り返せる
解消後、add commitを忘れないように注意
分支系统
-
- git branch : 現在のブランチを表示
-
- git branch -a : 追跡ブランチ(赤色)含むlocal branchを確認
-
- git branch -r : 追跡ブランチのみ確認
remotes/origin/HEAD->origin/*** はcloneした後に作業ディレクトリにcheckoutするbranchを表す
git branch [branch] : 新規branch作成
git branch [old_branch] [new_branch] : new branch を old branch に取り込む
git branch -d [branch] : branchを削除
DオプションでHEADにmergeされていないbranchも削除できる
カレントbranchはcheckout後でないとdeleteできない
git branch -m [old name] [new name] : branchの名前を変更
git branch -m [new name] : カレントbranchの名前を変更
切换到”git checkout”命令下。
-
- git checkout [branch] : branchに移動
: 追跡ブランチを指定してリモートにアクセスすることも可能
git checkout -b [branch] : 作成と同時に移動(branchのb)
git checkout [ID] [file] : 特定のcommitIDの時点に戻す
git checkout HEAD [file] : 最後にcommitした時点まで戻す = git checkout [file]
git checkout -b [branch] [origin/branch] : リモートブランチを[branch]の名前で取得して移動
git重置命令
-
- git reset –hard
すべて(ワーキングツリー、インデックス、HEAD)を最新のcommit地点まで戻す
git reset HEAD : HEADの位置とインデックスをHEADに動かす
= git reset –mixed HEAD
addしたものを戻す
ただしrmで消すのとは異なり、足跡が残る
git reset –hard HEAD~ : 1つ前のcommit状態に戻る
git reset –hard HEAD~2 : 2つ前のcommit状態に戻る
git reset softとhardの違い
git reset –soft : ワークディレクトリの内容はそのままでコミットだけを取り消す。
git reset –hard : コミット取り消した上でワークディレクトリの内容も書き換える。
git stash 是一个用于保存并隐藏工作目录中未提交的更改的命令。
-
- git stash : commit後の更新されていない変更を退避
-
- git stash list : 退避リストが見れる
-
- git stash pop : 元に戻す
-
- git stash apply : リストを残したまま戻す
-
- git stash save ‘hoge’ : stash自体に名前をつける
ただし、名前からstashを取れるわけではない(メモリは一つなので)
git stash drop : stashを削除
git标签系统
-
- git tag [val] : 最新のcommitにタグをつける
checkoutでタグを指定して戻すことができる
使用git revert可以撤销先前的提交。
-
- git revert [ID] : ID時のコミットのみを取り消す
AA → BB → CC のコミット順序で、BBのIDをrevertすると、AAとCCのみ残る
resetやcheckoutではBB以降のCCも消えてしまう
revertを取り消すのは、git revert –abort
利用 git rebase 进行版本合并。
-
- git rebase [元になるbranch] [変更されるbranch(省略するとカレントbranch)]
他branchの変更を取り込み吸収する
履歴がわかりやすくなるというメリットがあり、複数のcommitを一つにできる。
git rebase develop [branch]
[branch]にdevelopを取り込む。headは[branch]になる
rebaseの後は git add → git rebase –continueを行う
rebaseは古い履歴から順にcommit単位でたどられるので、最新の情報とconfrictするわけではない
つまり、過去のコンフリクトから順に解消してしなければならない
将以下内容用中文进行原生改写,只需要一种选项:
以交互模式重新设置git rebase -i [ID(HEAD~[数字])]
-
- 指定したcommitの削除
修正したいIDの一つ前を指定
指定されたID以降のcommitがpickで表示される pick=そのまま利用
pick idを消すとそのコミットが消される
指定したcommitの変更
修正したいIDの一つ前を指定
下の”pick”を”s”に書き換える → editerが再度立ち上がり、commit messageを変更できる
指定したcommitの編集
修正したいIDの一つ前を指定
“pick”を”e”に書き換え
(一時的に停止, コンフリクトしているので修正&addしろとmessage)vimで編集 → git add
git commit –amend で、commit message変更
git rebase –continue で、rebaseの再開
其他
从索引中将文件取消暂存(删除日志的操作)
-
- git rm [file]
–cachedオプションでファイルは残す
-rオプションでディレクトリ削除
-fオプションで強制
我想将文件排除在Git的目标外
-
- .gitignore
このファイルに追記したファイルはgitの対象外になる(トッラキングの対象外)
ただし、一度インデックスに載ったことがあるファイルは後で.gitignoreにいれても対象外にならない。
git rm –cached [file]でインデックスから降ろし、対象外にできる
正規表現で判定されるので注意
其他:当出现”No newline at end of file”时。
-
- 末尾に改行が含まれていないため、警告がでている状態
- vimにて、:set binary noeol実行で解決。