Git 思維導(dǎo)圖

作者:吳小龍同學(xué)
版本:V 0.0.1
"git add加到暫存區(qū),我想撤銷怎么搞?"
“這個(gè) bug 不用改了,我修改的代碼可以不要了,難道要把我修改的代碼再改回去?”
"我想裝個(gè)逼想知道我今天寫了寫了多少行代碼,怎么看?"
想要解答以上問題,先簡(jiǎn)單了解“工作區(qū)”、“暫存區(qū)”、“本地倉(cāng)庫(kù)”、“遠(yuǎn)程倉(cāng)庫(kù)”四個(gè)概念。
工作區(qū):你現(xiàn)在修改區(qū)域;
暫存區(qū):通過命令git add把代碼放到暫存區(qū);
本地倉(cāng)庫(kù):使用命令git commit提交代碼并不是真的提上來了,而是放在本地倉(cāng)庫(kù)
遠(yuǎn)程倉(cāng)庫(kù):git push才真的提交到遠(yuǎn)程倉(cāng)庫(kù)。

克隆倉(cāng)庫(kù)
#?下載一個(gè)項(xiàng)目和它的整個(gè)代碼歷史
$?git?clone?[url]
倉(cāng)庫(kù)配置
#?設(shè)置提交代碼時(shí)的用戶信息
$?git?config?[--global]?user.name?"[name]"
$?git?config?[--global]?user.email?"[email?address]"
#?顯示當(dāng)前的Git配置
$?git?config?--list
查看工作區(qū)狀態(tài)
#?顯示有變更的文件
$?git?status
#?狀態(tài)簡(jiǎn)覽
$?git?status?-s
查看提交記錄
#?查看commit歷史
$?git?log
#?查看commit歷史及每次commit發(fā)生文件變更的信息
$?git?log?--stat
#?查看某個(gè)文件的每一次diff
$?git?log?-p?[file]
#?指定提交條目,且附帶每次提交詳細(xì)變化
$?git?log?-p?-<n>
#?查看過去5次提交
$?git?log?-5?--pretty?--oneline
#?查看當(dāng)前分支的最近幾次提交
$?git?reflog
#?查看今天你寫了多少行代碼
$?git?diff?--shortstat?"@{0?day?ago}"
#?查看兩個(gè)星期內(nèi)的改動(dòng)
$?git?whatchanged?--since='2?weeks?ago'
對(duì)比文件變化
#?顯示暫存區(qū)和工作區(qū)的差異
$?git?diff
#?顯示暫存區(qū)和上一個(gè)commit的差異
$?git?diff?--cached?[file]
#?顯示工作區(qū)與當(dāng)前分支最新commit之間的差異
$?git?diff?HEAD
#?顯示兩次提交之間的差異
$?git?diff?[commit1-id]?[commit2-id]
#?顯示某次提交commit信息和修改內(nèi)容
#?顯示某次提交commit信息和修改內(nèi)容
$?git?show?[commit-id]
#?顯示某次提交commit信息
$?git?show?--name-only?[commit-id]
#?顯示某次提交時(shí),某個(gè)文件的內(nèi)容
$?git?show?[commit-id]:[filename]
添加文件到暫存區(qū)
#?添加指定文件到暫存區(qū)
$?git?add?[file1]?[file2]?...
#?添加指定目錄到暫存區(qū),包括子目錄
$?git?add?[dir]
#?添加當(dāng)前目錄的所有文件到暫存區(qū)
$?git?add?.
#?添加每個(gè)變化前,都會(huì)要求確認(rèn)
#?對(duì)于同一個(gè)文件的多處變化,可以實(shí)現(xiàn)分次提交
$?git?add?-p
提交到本地倉(cāng)庫(kù)
#?提交暫存區(qū)到倉(cāng)庫(kù)區(qū)
$?git?commit?-m?[message]
#?提交暫存區(qū)的指定文件到倉(cāng)庫(kù)區(qū)
$?git?commit?[file1]?[file2]?...?-m?[message]
#?提交工作區(qū)自上次commit之后的變化,直接到倉(cāng)庫(kù)區(qū)
$?git?commit?-a
#?提交時(shí)顯示所有diff信息
$?git?commit?-v
#?使用一次新的commit,替代本地倉(cāng)庫(kù)最新一次提交
#?如果代碼沒有任何新變化,則用來改寫上一次commit的提交信息
$?git?commit?--amend?-m?[message]
#?重做上一次commit,并包括指定文件的新變化
$?git?commit?--amend?[file1]?[file2]?...
撤銷
#?撤銷暫存區(qū)某個(gè)文件到工作區(qū)
$?git?reset?HEAD?<file>
#?撤銷暫存區(qū)所有修改到工作區(qū)
$?git?reset?HEAD/git?reset?[file]
#?撤銷工作區(qū),不保留修改
$?git?checkout?<file>
#?撤銷工作區(qū)所有修改
$?git?checkout?.
#?同時(shí)撤銷暫存區(qū)和工作區(qū),且不保留修改
$?git?reset?--hard
#?撤銷本地倉(cāng)庫(kù)最新一次提交所有修改到工作區(qū)
$?git?reset?HEAD^
回退
#?回退本地倉(cāng)庫(kù)最新一次提交到暫存區(qū)
$?git?reset?--soft?HEAD^
#?回退本地倉(cāng)庫(kù)最新一次提交,不保留暫存區(qū)和工作區(qū)
$?git?reset?--hard?HEAD^
#?回退本地倉(cāng)庫(kù)n次提交
$?git?reset?--hard?HEAD~n
#?回退到某次提交,不保留暫存區(qū)和工作區(qū)
$?git?reset?--hard?[commit-id]
#?回退到某次提交,同時(shí)重置暫存區(qū),但工作區(qū)不變
$?git?reset?[commit-id]
分支
#?列出所有本地分支
$?git?branch?-l
#?列出所有遠(yuǎn)程分支
$?git?branch?-r
#?列出所有本地分支和遠(yuǎn)程分支
$?git?branch?-a
#?新建一個(gè)分支,但依然停留在當(dāng)前分支
$?git?branch?[branch-name]
#?切換到該分支
$?git?checkout?[branch-name]
#?新建一個(gè)分支,并切換到該分支
$?git?checkout?-b?[branch-name]
#?新建一個(gè)分支,指向指定commit
$?git?branch?[branch-name]?[commit]
#?新建一個(gè)分支,與指定的遠(yuǎn)程分支建立追蹤關(guān)系
$?git?branch?--track?[branch]?[remote-branch]
#?設(shè)置跟蹤遠(yuǎn)程分支
$?git?branch?-u?<遠(yuǎn)程分支名>?<本地分支名>
#?合并指定分支到當(dāng)前分支
$?git?merge?[branch]
#?選擇一個(gè)commit,合并進(jìn)當(dāng)前分支
$?git?cherry-pick?[commit-id]
#?刪除本地分支
$?git?branch?-d?[branch-name]
#?刪除遠(yuǎn)程分支
$?git?push?origin?--delete?[branch-name]
$?git?branch?-dr?[remote/branch]

評(píng)論
圖片
表情
