Git命令整理

簡(jiǎn)介

Git是一款免費(fèi)句喜、開源的分布式版本控制系統(tǒng)涧郊,可以有效贯被、高速的處理從很小到非常大的項(xiàng)目版本管理。目前開發(fā)中大部分開發(fā)者都是使用的Git底燎。

如果是初學(xué)者要由淺入深的完成學(xué)習(xí)Git的話刃榨,首推就是廖雪峰的Git教程

如果說書籍的話双仍,看書比較少枢希,不過覺得《Android群英傳:神兵利器》的第二章講的還不錯(cuò)。書的PDF版 (侵刪)朱沃。

書中的這張圖覺得不錯(cuò),有助于對(duì)Git的理解:

iamge

本文并不是一個(gè)對(duì)git講解苞轿,而只是對(duì)常用的一些Git命令的整理。

盜一張圖:該圖將Git的常用操作已經(jīng)做了很詳盡的整理逗物,使用的時(shí)候完全可以做在這張圖中找搬卒。下面我也只是對(duì)該圖做了一些整理,揀選了些更常用的翎卓。圖片在這里保存好使不是很清晰契邀,網(wǎng)盤分享了下

Git命令.png


基本流程

  • 全局配置
    git config --global user.name "wooden"
    git config --global user.email "wooden.163.com"
    
  • 創(chuàng)建新庫(kù)失暴,創(chuàng)建README.md并提交
    git clone https://github.com/GwindIT/Test.git
    cd Test
    touch README.md
    git add README.md
    git commit -m "add README"
    git push -u origin master
    
  • 已存在項(xiàng)目關(guān)聯(lián)遠(yuǎn)程Git庫(kù)
    cd existing_folder
    git init
    git remote add origin https://github.com/GwindIT/Test.git
    git add .
    git commit
    git push -u origin master
    

常用操作

該部分的命令是摘取的更為常用的命令坯门。

git clone <url> (創(chuàng)建新庫(kù))

git add .   (添加所有文件到版本庫(kù))

git commit -m "msg"  (提交所有修改)

git merge <branchname> (合并分支)

git checkout -b <branchname> ( 基于當(dāng)前分支的末梢創(chuàng)建新分支并且檢出分支)

git checkout <branchname> (檢出分支)

git push (推入遠(yuǎn)程庫(kù))

git pull (獲取并且合并到當(dāng)前本地分支)

git diff (比較的是工作目錄(Working tree)和暫存區(qū)域快照(index)之間的差異)

git status (列出當(dāng)前目錄所有還沒有被git管理的文件和被git管理且被修改但還未提交(git commit)的文件)

本地操作

初始化

  • Git用戶名郵箱的全局配置

    git config --global user.name "wooden"
    git config --global user.email "wooden.163.com"
    git config --global color.ui "always"
    
  • 初始化新版本庫(kù)

    git init 
    
    • 根目錄下創(chuàng)建一個(gè)名為.git的文件夾。如果你沒有看到.git目錄逗扒,那是因?yàn)檫@個(gè)目錄默認(rèn)是隱藏的古戴,用ls -ah命令就可以看見。
  • 設(shè)置忽略文件

    • 在Git工作區(qū)的根目錄下創(chuàng)建一個(gè)特殊的.gitignore文件矩肩,然后把要忽略的文件名填進(jìn)去现恼,Git就會(huì)自動(dòng)忽略這些文件。
  • 添加文件到新版本庫(kù)

    • 添加單個(gè)文件:
    git add somefile.txt
    
    • 添加所有txt文件:
    git add *.txt
    
    • 添加所有文件,包括子目錄黍檩,但不包括空目錄:
    git add .
    
    • 僅監(jiān)控已經(jīng)被add的文件(即tracked file)叉袍,會(huì)將被修改的文件提交到暫存區(qū)。add -u 不會(huì)提交新文件(git add -update)
     git add -u
    
  • 提交

    • 提交
    git commit -m "Message"
    
    • add與commit的合并操作
    git commit -am "Message"
    

    但需要注意改命令只是提交修改的文件刽酱,當(dāng)有新建的文件的時(shí)候是無法提交的颜凯。

日常操作

  • 提交

    • 提交所有修改文件
    git commit -m "msg" -a
    
    • 提交單個(gè)文件
    git commit -m "add readme msg" readme.txt  
    
  • 撤銷修改

    • 撤銷尚未提交的修改

      • 撤銷某個(gè)文件
      git checkout head readme.txt 
      
      • 撤銷所有txt文件
      git checkout head *.txt
      
      • 撤銷所有文件
      git checkout head .
      
    • 撤銷提交的修改

      • 反轉(zhuǎn)提交
      git revert --no-commit head
      

      生成一個(gè)新的提交來撤銷某次提交间校,此次提交之前的commit都會(huì)被保留

      • 復(fù)位
      取消暫存:git reset head 或 git reset head <filename>
      復(fù)位到head之前的版本:git reset --hard head
      

      不會(huì)在版本中留下痕跡

  • 分支

    • 列出本地分支
    git branch
    
    • 列出所有分支
    git branch -a
    
    • 基于當(dāng)前分支末梢創(chuàng)建新分支
    git branch <branchname>
    
    • 檢出分支
    git checkout <branchname>
    
    • 基于當(dāng)前分支的末梢創(chuàng)建新分支并且檢出分支
    git checkout -b <branchname>
    
    • 合并分支

      • 普通合并
      git merge <branchname> 
      

      發(fā)生沖突不會(huì)自動(dòng)提交戚宦,需要解決沖突。

      • 壓合合并
      git merge -squash <brachename>
      
      • 揀選合并
      git cherry-pick --no-commit <branchname>
      
    • 重命名分支

    git branch -m <branchname> <newname> (不會(huì)覆蓋已存在的同名分支)
    git branch -M <branchname> <newname> (覆蓋已存在的同名分支)
    
    • 刪除分支
    git branch -d new2 (如果分支沒有被合并會(huì)刪除失敗)
    git branch -D new2 (即使分支沒有被合并也照刪不誤)
    
  • 解決沖突

    • 沖突很少時(shí)察郁,直接編輯沖突文件然后提交即可。
  • 標(biāo)簽

    • 創(chuàng)建標(biāo)簽
    git tag 1.0
    git tag -a v1.4 -m 'my version 1.4'
    
    • 將標(biāo)簽推送到遠(yuǎn)程倉(cāng)庫(kù)
    git push origin [tagname](單個(gè)標(biāo)簽)
    git push [origin] --tags(所有標(biāo)簽)
    
    • 顯示標(biāo)簽列表
    git tag
    
    • 檢出標(biāo)簽
    git checkout 1.0
    
    • 由標(biāo)簽創(chuàng)建分支
    git checkout -b b1.0 1.0
    git branch b1.0 1.0
    
    • 通常的git push不會(huì)將標(biāo)簽對(duì)象提交到git服務(wù)器转唉,我們需要進(jìn)行顯式的操作:
      git push origin v0.1.2 # 將v0.1.2標(biāo)簽提交到git服務(wù)器
      git push origin –tags # 將本地所有標(biāo)簽一次性提交到git服務(wù)器
    
    • 刪除本地標(biāo)簽

      git tag -d 1.0
      
  • 刪除遠(yuǎn)程標(biāo)簽

    git push origin :refs/tags/標(biāo)簽名 
    git push origin :refs/tags/protobuf-2.5.0rc1 
    
  • 查看狀態(tài)

    • 當(dāng)前狀態(tài)
    git status
    
    • 歷史記錄
    git log
    gitk (查看當(dāng)前分支記錄)
    gitk <branchname> (查看某分支歷史記錄)
    gitk -all (查看所有分支)
    
    • 每個(gè)分支最后的提交
    git branch -v
    

遠(yuǎn)程操作

初始化

  • 克隆版本庫(kù)

    git clone <url>
    
  • 別名

    • 添加別名
    git remote add <別名> <遠(yuǎn)程庫(kù)URL>
    
    • 刪除別名
    git remote rm <別名>
    
  • 創(chuàng)建一個(gè)無本地分支的庫(kù)

    git branch -bare
    

日常操作

  • 分支

    • 列出遠(yuǎn)程分支
    git branch -r
    
    • 刪除遠(yuǎn)程分支
     git push origin --delete <BranchName>
    
    • 刪除遠(yuǎn)程已經(jīng)不存在的分支
    git remote prune origin
    
  • 從遠(yuǎn)程獲取

    • 獲取但不合并
    git fetch <遠(yuǎn)程版本庫(kù)>
    
    • 獲取并且合并到當(dāng)前本地分支
    git pull
    
  • 推入遠(yuǎn)程庫(kù)

    git push origin master
    
  • 本地分支與關(guān)聯(lián)遠(yuǎn)程分支

    git branch --set-upstream-to=origin/<branchename>
    

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末皮钠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子赠法,更是在濱河造成了極大的恐慌麦轰,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砖织,死亡現(xiàn)場(chǎng)離奇詭異款侵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)侧纯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門新锈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人眶熬,你說我怎么就攤上這事妹笆。” “怎么了娜氏?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵拳缠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我贸弥,道長(zhǎng)窟坐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任绵疲,我火速辦了婚禮哲鸳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘最岗。我一直安慰自己帕胆,他們只是感情好朝捆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布般渡。 她就那樣靜靜地躺著,像睡著了一般芙盘。 火紅的嫁衣襯著肌膚如雪驯用。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天儒老,我揣著相機(jī)與錄音蝴乔,去河邊找鬼。 笑死驮樊,一個(gè)胖子當(dāng)著我的面吹牛薇正,可吹牛的內(nèi)容都是我干的片酝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挖腰,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼雕沿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起猴仑,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤审轮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后辽俗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疾渣,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年崖飘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了榴捡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坐漏,死狀恐怖薄疚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赊琳,我是刑警寧澤街夭,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站躏筏,受9級(jí)特大地震影響板丽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜趁尼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一埃碱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酥泞,春花似錦砚殿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至悯姊,卻和暖如春羡藐,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悯许。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工仆嗦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人先壕。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓瘩扼,卻偏偏與公主長(zhǎng)得像谆甜,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子集绰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353