Git速查表
Git速查表
使用的詞彙
储存库
在版本管理系统中,是用来存储程序和文件的地方。
Git可以处理两种类型的存储库,即本地存储库和远程存储库。
本地代码仓库
当前任务所在的代码库。如果主要在个人电脑或开发服务器等进行工作,那么就是本地代码库。另外,还可以从远程代码库克隆代码库,并在个人电脑或服务器上构建环境。
远程仓库
可以使用外部仓库,通过本地仓库实现对远程仓库的操作。可用于多人协作或在互联网上公开。
工作台
用户能够编辑或创建新文件的位置。
索引 (suǒ
编辑后的工作区,在提交到仓库之前,保存了下一次提交的目标状态的位置。
分支
用于将历史流程分叉记录的工具。分叉的分支不受其他分支影响,因此在同一个代码库中可以同时进行多个更改。
在Git中存在三种类型的分支,包括本地分支、远程分支和远程跟踪分支。
本地分支
在本地仓库中管理的分支。
远程分支
远程仓库中的分支。
远程跟踪分支
将远程分支跟踪到本地代码库的分支。
例如,origin/master表示正在跟踪一个名为origin的远程代码库中的master分支。
结账
将存储库中的分支展开到工作目录中。
在Git中,不仅可以检出分支,还可以检出标签、特定提交或远程存储库的分支等。
标签
为使提交更易于查找,给予一个易懂的名称。
提交
对于文件的修改添加的消息
修改
Git使用哈希值来进行版本管理,每次提交都会生成一个哈希值。
续写
現在指定的代名詞是正在進行結帳的分支的最新提交。
FETCH_HEAD 取回头指向最近一次成功的 fetch 操作的提交.
指定最新提交的远程分支的代词。
原始标题
指向前一个头部的值的代词。
合并头=MERGE_HEAD
在合并过程中生成的指代“commit”,记录了要合并到分支中的提交。
基础的工作流程
-
- 创建仓库
-
- 创建和编辑文件(工作目录)
-
- 提交到索引
- 提交到仓库
最初的设置
创建存储库
#リポジトリの作成
git init
ls a
. .. .git
#作成されたフォルダとファイル
cd .git
ls
HEAD description info refs
config hooks objects
创建用于Git的名称和地址。
#グローバル設定
git config --global user.name "username"
git config --global user.email "email"
#該当リポジトリ
git config user.name "username"
git config user.email "email"
基本指令
将文件注册到索引中。
git add filename
#カレントディレクトリの指定
git add .
#全てのファイルを登録
git add --all
将更改提交到本地仓库
将已在索引中注册的文件更改提交到代码库中。
#コミット
git commit -m 'message'
#ワーキングツリーからインデックスに登録し,コミットする
git commit -am 'message'
#コミットメッセージの変更
git commit --amend
输出差分
检查工作树和索引的差异。
git diff
#指定のファイルの差分
git diff filename
#ブランチやコミット間の差分
git diff ブランチ1 ブランチ2
#checkoutしてるブランチとインデックスとの差分
git diff --cached
展示提交日志
#コミットログを出力する
git log
#コミットログを要約して出力する
git shortlog
#コミットログを1行で出力する
git log --oneline
确认本地仓库和工作目录的状态
git status
关于提交的显示
-
- On branch master
この状態でコミットすると,masterブランチにコミットされる
nothing to commit
ワーキングツリーとインデックスに対して変更がない.
Changes to be committed
表示されているファイルが次回のコミットの対象となっている.
Changed but not updated
ワーキングツリーで変更されているが,その変更がインデックスに登録されていないことを表す.
Untracked files
ワーキングツリーに存在するがGitの管理対象となっていない.
显示有关文件状态的信息
-
- new file
新しくインデックスに表示されたファイル
modified
ワーキングツリーやインデックスの状態から変更されていることを表す.
renamed
ファイルを移動したり,フィアル名を変更したりした場合に表示される.
deleted
ファイルを削除した場合に表示される.
both modified
マージやリベースに失敗した場合で,複数のブランチで変更が加えられているファイルに対して表示される.
unmerged
マージやリベースに失敗した場合で,both modified以外の時に表示される.
文件的移动、修改/删除
#移動・変更
git mv
#削除
git rm
根据本地仓库和索引的状态进行恢复。
#HEADの参照とインデックス,ワーキングツリーの状態を戻す
git reset --hard
#HEADの参照のみを変更する
git reset --soft
#HEADの参照とインデックスを変更する.git resetのデフォルト
git reset -mixed
整理工作区
#リポジトリで管理されていないファイルの削除
git clean -f
#削除されるファイルの確認
git clean -n
#ディレクトリの削除
git clean -d
搜索特定的字符串
git grep XXX
显示提交内容
git show
如果使用远程仓库的话
克隆远程代码库
git clone リモートリポジトリ
注册/更新/删除远程资源库
#登録
git remote add リポジトリ名 パス
#更新
git remote update
#特定のリポジトリの更新
git remote update リポジトリ名
#削除
git remote rm リポジトリ名
#存在しなくなったブランチの削除
git remote prune
将远程仓库的数据同步到本地仓库。
#リモートリポジトリとブランチを指定して反映
git pull origin リモートブランチ
关于git pull命令的说明
git pull命令是git fetch命令和git merge命令的结合。
从远程存储库获取存储库数据。
#リポジトリが登録済みの状態でブランチを指定
git fetch origin リモートリポジトリ
取得的数据将作为FETCH_HEAD进行检出。
fetch和remote update的区别
-
- fetch
ブランチ単位で変更を取得
remote update
リポジトリ単位で変更を取得
合并分支
#ブランチを指定してマージ
git merge ブランチ名
#コミットメッセージを指定してマージ
git merge ブランチ名 -m 'message'
将本地存储库的数据发送到远程存储库。
#リモートリポジトリ「origin」に「master」ブランチを送信
git push origin ローカルブランチ名
#反映先のブランチを指定
git push origin ローカルブランチ名:リモートブランチ名
如果git push出现错误的情况
-
- どちらかのリポジトリにしかないコミットがある場合
- リモートブランチがチェックアウトされている場合
创建/确认/修改/删除分支
#ローカルリポジトリに作成
git branch ブランチ名
#ローカルブランチの確認
git branch
#リモートトラッキングブランチの確認
git branch -r
#ブランチ毎の最新コミットの確認
git branch -v
#ブランチ名の変更
git branch -m ブランチ名(old) ブランチ名(new)
#ブランチの削除
git branch -d ブランチ名
#リモートブランチの削除(ローカルブランチを削除した後)
git push origin :ブランチ名
分支检出
git checkout ブランチ名
在工作区或索引中进行更改并进行检出,改动将直接反映到其他分支中。
然而,在检出到目标分支时,如果同一文件有更改,则会出现错误。
添加标签
#タグ一覧
git tag
#タグを付ける
git tag タグ名 リビジョン
#タグにメッセージを付ける
git tag -m 'message'
#リモートに反映
git push origin タグ名
#タグの削除
git tag -d タグ名
#直近のタグの表示
git describe
将跟随那个已经检出指定分支的分支所做的提交
git rebase ブランチ名
如果从Master分支切换到名为Test的分支,并进行编辑、注册和提交以进行Rebase,那么Master分支的HEAD将追随Test分支的提交。
merge和rebase的区别
-
- merge
チェックアウトしているブランチにあるコミットを変更せず,各ブランチをマージする
rebase
チェックアウトしているブランチのコミットを指定したブランチの最新コミットに追従させる.
换句话说,在合并(merge)和变基(rebase)时,提交(commit)会有所不同。
便利指令
创建指定提交的快照
git archive --format=フォーマット名 --prefix=展開後のファイル名 コミット名 > ファイル名
临时保存提交状态
#保存
git stash
#メッセージを付けて保存
git stash save メッセージ
#保存されたリストの表示
git stash list
#保存された内容を戻す
git stash pop
#保存された内容を全て削除
git stash clear
查找不包含在分支中的提交
git cherry -v 調査元 調査先
将特定的提交合并到分支中
git cherry-pick 取り込みたいコミット
确定了存在bug的位置
git bisect start
git bisect good
git bisect bad
#自動実行
git bisect run
整理存储库中的对象
git gc
显示提交历史的时间顺序
git reflog
refspec是什么
refspec是将本地存储库和远程存储库的分支等进行关联的内容。
git push origin refs/hands/远程分支(源参考):refs/hands/本地分支(目标参考)
同时,也可以在config中进行指定。