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実行で解決。