git 常用命令

配置git

git config --global user.name/user.email
// 配置級(jí)別
 --local // 默認(rèn)官紫,高優(yōu)先級(jí),只影響本倉(cāng)庫(kù)
--global // 中富蓄, 影響到當(dāng)前用戶的所有g(shù)it倉(cāng)庫(kù)
--system // 低徘六, 影響全局git 倉(cāng)庫(kù)

初始化倉(cāng)庫(kù)

git init [[path]/ [path]--bare]

基本操作

git status // 對(duì)狀態(tài)的跟蹤 內(nèi)容狀態(tài):工作目錄/ 暫存區(qū)/提交區(qū)  文件狀態(tài): 未跟蹤/已跟蹤
git add // 添加文件到暫存區(qū)(同時(shí)文件被跟蹤)
git add . // 他會(huì)監(jiān)控工作區(qū)的狀態(tài)樹(shù)沼死,使用它會(huì)把工作時(shí)的所有變化提交到暫存區(qū)歼跟,包括文件內(nèi)容修改(modified)以及新文件(new),但不包括被刪除的文件巴刻。
git add -u // 他僅監(jiān)控已經(jīng)被add的文件(即tracked file),他會(huì)將被修改的文件提交到暫存區(qū)蛉签。add -u 不會(huì)提交新文件(untracked file)胡陪。(git add --update的縮寫(xiě))
git add -A  // 是上面兩個(gè)功能的合集(git add --all的縮寫(xiě))
git rm // 刪除
-- cached // 僅從暫存區(qū)刪除
--f // 從暫存區(qū)與工作目錄刪除
git rm $(git ls-files --deleted) // 刪除所有被跟蹤,但是在工作目錄被刪除的文件
git ls-files // 展示所有被跟蹤的文件
git checkout -- <file>  // to discard changes in working directory(撤銷工作目錄的修改碍舍,緩存區(qū)內(nèi)容覆蓋工作目錄)
git reset HEAD <file> // to unstage (撤銷暫存區(qū)內(nèi)容柠座, 即暫存區(qū)被提交區(qū)內(nèi)容覆蓋)
git checkout HEAD -- <file> // 提交區(qū)的內(nèi)容覆蓋暫存區(qū)和工作目錄,即撤銷所有修改到上次commit

git commit // 提交到 提交區(qū)
-m 'message' // 提交時(shí)的message
-a -m'message' // 直接從工作目錄提交到提交區(qū)
-m"message" -n // m:message, n :no-verify

git-log // 查看提交的歷史記錄
--oneline // 簡(jiǎn)短記錄乒验,一行

git 中別名的設(shè)置

git config alias.<shortname>  '<fullcommand>' // 為fullcommand 配置別名shortname
// eg:
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
 "

顯示工作目錄與暫存區(qū)的差異

git diff // 工作目錄與暫存區(qū)的差異
git diff -cached [<reference>] // 暫存區(qū)與某次提交差異愚隧,默認(rèn)為HEAD
git diff <reference> // 工作目錄與某次提交的差異

忽略文件

.gitignore //在添加時(shí)忽略匹配文件蒂阱,僅作用于**未跟蹤**的文件

分支管理

git branch // 分支的增刪改查
git branch <branchName> // 查看分支
git branch -a // 查看本地和遠(yuǎn)程分支
git branch -m "daily/0.0.1" // 在本分支修改名字
git branch –d <branchName> // 如果是要?jiǎng)h除本地已經(jīng)合并了的分支
git branch –D <branchName> // 如果是要?jiǎng)h除本地未合并的分支
git branch -v 顯示所有分支信息
git checkout <branchName> 通過(guò)移動(dòng)HEAD檢出版本锻全,切換分支
git checkout -b <branchName> 創(chuàng)建分支狂塘,并切換到該分支
git checkout -b <branchName> origin/<branchName> 以origin/branchName 為基礎(chǔ)創(chuàng)建分支并切換到該分支
git fetch origin <origin branchName>:<local branchName> // 使用該方式會(huì)在本地新建分支x,但是不會(huì)自動(dòng)切換到該本地分支x鳄厌,需要手動(dòng)checkout荞胡。

git reset -將當(dāng)前分支會(huì)退到歷史某個(gè)版本
git reset --mixed <commit> // (默認(rèn)), 把分支(branch&HEAD)移動(dòng)到 commit, 且把暫存區(qū)內(nèi)容替換為commit
git reset --soft <commit> // 暫存區(qū)和工作目錄不改變
git reset --hard <commit> // 且把暫存區(qū)和 工作目錄都用commit內(nèi)容替換掉
// reset 捷徑
A^ // A的上一次提交
A~n // A之前的第n次提交
// eg:
git reset HEAD^
git reset HEAD~5
git reset HEAD 撤銷 add .到add 前。
git reset --hard HEAD^ 撤銷到commit的上一次了嚎,如果要撤銷到上99次泪漂,可以用 git reset --hard~99;
git reset --hard 9425c47b6 //版本號(hào)

git reflog // 查詢所有提交log,包括回退前的版本

git stash // 保存當(dāng)前的暫存區(qū)和工作目錄到git stash 棧中歪泳,并從最近的一次提交中讀取相關(guān)內(nèi)容萝勤,讓暫存區(qū)和工作目錄保持clean,從而可以切換分支等一系列操作呐伞。
git stash save 'message' // 同 git stash 并增加 message敌卓,便于理解保存內(nèi)容
git stash pop: 從Git stash棧中讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容伶氢。由于可能存在多個(gè)Stash的內(nèi)容趟径,所以用棧來(lái)管理,pop會(huì)從最近的一個(gè)stash中讀取內(nèi)容并恢復(fù)癣防。
git stash apply stash@{0} // 讓保存的stash@{0} 中的內(nèi)容從新回到工作目錄和暫存區(qū)
git stash drop stash@{0} // 刪除git stash棧中的stash@{0}內(nèi)容
git stash list: 顯示Git stash棧內(nèi)的所有備份蜗巧,可以利用這個(gè)列表來(lái)決定從那個(gè)地方恢復(fù)。
git stash clear: 清空Git棧蕾盯。此時(shí)使用gitg等圖形化工具會(huì)發(fā)現(xiàn)幕屹,原來(lái)stash的哪些節(jié)點(diǎn)都消失了。

git merge // 合并分支, 默認(rèn)為 fast-forward合并
git merge branchA // 把branchA 合并到當(dāng)前分支
git merge branchA branchB // 把branchA合并到branchB
git merge --no-ff  branchA // 合并分支级遭,并保留分支的合并信息
git cat-file -p HEAD|| branch|| commitHash // 查看具體分支的詳細(xì)信息 -p 參數(shù)為 'Pretty-print the contents of object based on its type.'

reset vs checkout

reset 與checkout命令對(duì)比圖

rebase 變基

git rebase branchA// 檢修提交歷史基線香嗓,使合并的分支branchA成為線性
git rebase -- onto branchA commitId // 同上,只不過(guò)合并了commitId装畅,而不是本分支的所有內(nèi)容靠娱。
盡量不要在共有分支上使用rebase,因?yàn)閞ebase會(huì)從新生成commitID會(huì)導(dǎo)致你本地的部分commidId和隊(duì)友的不同掠兄,從而造成沒(méi)必要的沖突

git rebase 
while(存在沖突) {
    git status
    找到當(dāng)前沖突文件像云,編輯解決沖突
    git add -u
    git rebase --continue
    if( git rebase --abort ) 如果rebase過(guò)程中,你想中途退出蚂夕,恢復(fù)rebase前的代碼則可以用命令 
        break; 
}
使用git rebase合并多次commit
1.首先使用git log查看一下提交歷史
2. git 壓縮  git rebase -i HEAD~4

git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase

git rebase -i 的使用

使用別名

git tag tagName branch || commitId // 把 此時(shí)此刻的branch 或者commitId 打上名為tagName 的tag
git tag -l // 列出tag的list
git push origin tagName // 把tag推到origin

創(chuàng)建本地遠(yuǎn)程提交倉(cāng)庫(kù)

git init [path] --bare // --bare 表示為裸倉(cāng)庫(kù)迅诬,是因?yàn)檫@個(gè)倉(cāng)庫(kù)只保存git歷史提交的版本信息

遠(yuǎn)程提交

源倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)合并
git remote -v 查看遠(yuǎn)程主機(jī)狀態(tài)
git remote rm origin 刪除遠(yuǎn)程倉(cāng)庫(kù)
git remote add upstream git@github.com:xxx/xxx.git 添加源倉(cāng)庫(kù)地址
git fetch upstream 從源倉(cāng)庫(kù)更新同步代碼
git merge upstream/master 合并到本地代碼
git push 向自己遠(yuǎn)程倉(cāng)庫(kù)推送剛才同步源倉(cāng)庫(kù)后的代碼

git fetch // 本地更新遠(yuǎn)程同步
$ git push origin newBranch  // 把分支同步到遠(yuǎn)程,如果遠(yuǎn)程沒(méi)有該分支婿牍,直接創(chuàng)建一個(gè)(但是前提是local分支名字要和遠(yuǎn)程相同)
git push origin --delete thisBranch // 刪除遠(yuǎn)程分支

git clone   // 克隆一個(gè)遠(yuǎn)程倉(cāng)庫(kù)

gid

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侈贷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子等脂,更是在濱河造成了極大的恐慌俏蛮,老刑警劉巖撑蚌,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異搏屑,居然都是意外死亡争涌,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)辣恋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)亮垫,“玉大人,你說(shuō)我怎么就攤上這事伟骨∫剩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵携狭,是天一觀的道長(zhǎng)害晦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)暑中,這世上最難降的妖魔是什么壹瘟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮鳄逾,結(jié)果婚禮上稻轨,老公的妹妹穿的比我還像新娘。我一直安慰自己雕凹,他們只是感情好殴俱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著枚抵,像睡著了一般线欲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汽摹,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天李丰,我揣著相機(jī)與錄音,去河邊找鬼逼泣。 笑死趴泌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拉庶。 我是一名探鬼主播嗜憔,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼氏仗!你這毒婦竟也來(lái)了吉捶?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呐舔,沒(méi)想到半個(gè)月后币励,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滋早,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砌们。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杆麸。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浪感,靈堂內(nèi)的尸體忽然破棺而出昔头,到底是詐尸還是另有隱情,我是刑警寧澤影兽,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布揭斧,位于F島的核電站,受9級(jí)特大地震影響峻堰,放射性物質(zhì)發(fā)生泄漏讹开。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一捐名、第九天 我趴在偏房一處隱蔽的房頂上張望旦万。 院中可真熱鬧,春花似錦镶蹋、人聲如沸成艘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)淆两。三九已至,卻和暖如春拂酣,著一層夾襖步出監(jiān)牢的瞬間秋冰,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工婶熬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丹莲,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓尸诽,卻偏偏與公主長(zhǎng)得像甥材,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子性含,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一洲赵、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看當(dāng)前狀態(tài) git c...
    LOVE_晴天閱讀 2,324評(píng)論 0 10
  • 查看、添加、提交叠萍、刪除芝发、找回,重置修改文件 git help # 顯示command的help git sho...
    Swiftor閱讀 2,116評(píng)論 0 2
  • 查看倉(cāng)庫(kù)狀態(tài)和文件更改 查看工作區(qū)狀態(tài):git status與最近的一次add或commit比較文件的不同:git...
    burningalive閱讀 365評(píng)論 0 0
  • Git簡(jiǎn)介 Git是Linux之父Linus的第二個(gè)偉大的作品苛谷,它最早是在Linux上開(kāi)發(fā)的辅鲸,被用來(lái)管理Linux...
    Windy_816閱讀 27,163評(píng)論 1 37
  • 開(kāi)始: 1) 遠(yuǎn)程倉(cāng)庫(kù)相關(guān)命令 檢出倉(cāng)庫(kù):$ git clone git://github.com/jquery/...
    草根老張閱讀 847評(píng)論 0 50