github skills

[TOC]
參考 Pro Git book

配置key

先生成一對key,可以從網(wǎng)盤的temp目錄里下
然后打開github的setting界面
把id_rsa.pub加到SSH and GPG keys里
把生成的兩個key都放到~/.ssh/目錄下

配置環(huán)境

在/home/leisurem/.gitconfig保存著github的用戶名啥的
可以用下面的命令修改
git config --global user.name [username]
git config --global user.email [email]
在git命令中開啟顏色顯示
git config --global color.ui true

舉例如下

git config --global user.name "leisurem"
git config --global user.email "leisurem@msn.com"

生成項目

在github里,點頭像左邊的加號,點new repository,把剩下的填滿即可

下載項目

先在項目界面獲取項目地址,類似git@github.com:leisurem/crawler.git
git clone git@github.com:leisurem/crawler.git到本地即可

常用命令

git  add .
表示添加所有更新

git commit -m 'first change'
表示本地提交更新

git push -u origin
表示把本地更新提交到github上

git pull 
# 抓取遠程倉庫所有分支更新并合并到本地 

git fetch origin
 抓取遠程倉庫更新 

git merge origin/master 
將遠程主分支合并到本地當(dāng)

命令匯總

初始化配置

#配置使用git倉庫的人員姓名  
git config --global user.name "Your Name Comes Here"  
  
#配置使用git倉庫的人員email  
git config --global user.email you@yourdomain.example.com  
  
#配置到緩存 默認15分鐘  
git config --global credential.helper cache   
  
#修改緩存時間  
git config --global credential.helper 'cache --timeout=3600'    
git config --global color.ui true  
git config --global alias.co checkout  
git config --global alias.ci commit  
git config --global alias.st status  
git config --global alias.br branch  
git config --global core.editor "mate -w"    # 設(shè)置Editor使用textmate  
git config -1 #列舉所有配置  

查看、添加、提交、刪除、找回,重置修改文件

git help <command>  # 顯示command的help  
git show            # 顯示某次提交的內(nèi)容  
git show $id  
   
git co  -- <file>   # 拋棄工作區(qū)修改  
git co  .           # 拋棄工作區(qū)修改  
   
git add <file>      # 將工作文件修改提交到本地暫存區(qū)  
git add .           # 將所有修改過的工作文件提交暫存區(qū)  
   
git rm <file>       # 從版本庫中刪除文件  
git rm <file> --cached  # 從版本庫中刪除文件,但不刪除文件  
   
git reset <file>    # 從暫存區(qū)恢復(fù)到工作文件  
git reset -- .      # 從暫存區(qū)恢復(fù)到工作文件  
git reset --hard    # 恢復(fù)最近一次提交過的狀態(tài),即放棄上次提交后的所有本次修改  
   
git ci <file>  
git ci .  
git ci -a           # 將git add, git rm和git ci等操作都合并在一起做  
git ci -am "some comments"  
git ci --amend      # 修改最后一次提交記錄  
   
git revert <$id>    # 恢復(fù)某次提交的狀態(tài),恢復(fù)動作本身也創(chuàng)建了一次提交對象  
git revert HEAD     # 恢復(fù)最后一次提交的狀態(tài)  

查看文件diff

git diff <file>     # 比較當(dāng)前文件和暫存區(qū)文件差異  
git diff  
git diff <$id1> <$id2>   # 比較兩次提交之間的差異  
git diff <branch1>..<branch2> # 在兩個分支之間比較  
git diff --staged   # 比較暫存區(qū)和版本庫差異  
git diff --cached   # 比較暫存區(qū)和版本庫差異  
git diff --stat     # 僅僅比較統(tǒng)計信息  

查看提交記錄

git log  
git log <file>      # 查看該文件每次提交記錄  
git log -p <file>   # 查看每次詳細修改內(nèi)容的diff  
git log -p -2       # 查看最近兩次詳細修改內(nèi)容的diff  
git log --stat      #查看提交統(tǒng)計信息  

取得Git倉庫

#初始化一個版本倉庫  
git init  
  
#Clone遠程版本庫  
git clone git@xbc.me:wordpress.git  
  
#添加遠程版本庫origin,語法為 git remote add [shortname] [url]  
git remote add origin git@xbc.me:wordpress.git  
  
#查看遠程倉庫  
git remote -v  

提交修改

#添加當(dāng)前修改的文件到暫存區(qū)  
git add .  
  
#如果你自動追蹤文件,包括你已經(jīng)手動刪除的,狀態(tài)為Deleted的文件  
git add -u  
  
#提交你的修改  
git commit -m 'haha'
  
#推送你的更新到遠程服務(wù)器,語法為 git push [遠程名] [本地分支]:[遠程分支]  
git push origin master  
  
#查看文件狀態(tài)  
git status  
  
#跟蹤新文件  
git add readme.txt  
  
#從當(dāng)前跟蹤列表移除文件,并完全刪除  
git rm readme.txt  
  
#僅在暫存區(qū)刪除,保留文件在當(dāng)前目錄,不再跟蹤  
git rm –cached readme.txt  
  
#重命名文件  
git mv reademe.txt readme  
  
#查看提交的歷史記錄  
git log  
  
#修改最后一次提交注釋的,利用–amend參數(shù)  
git commit --amend  
  
#忘記提交某些修改,下面的三條命令只會得到一個提交。  
git commit –m "add readme.txt"  
git add readme_forgotten  
git commit –amend  
  
#假設(shè)你已經(jīng)使用git add .,將修改過的文件a、b加到暫存區(qū)  
  
#現(xiàn)在你只想提交a文件,不想提交b文件,應(yīng)該這樣  
git reset HEAD b  
  
#取消對文件的修改  
git checkout –- readme.txt 

分支操作

git br -r           # 查看遠程分支  
git br <new_branch> # 創(chuàng)建新的分支  
git br -v           # 查看各個分支最后提交信息  
git br --merged     # 查看已經(jīng)被合并到當(dāng)前分支的分支  
git br --no-merged  # 查看尚未被合并到當(dāng)前分支的分支  
   
git co <branch>     # 切換到某個分支  
git co -b <new_branch> # 創(chuàng)建新的分支,并且切換過去  
git co -b <new_branch> <branch>  # 基于branch創(chuàng)建新的new_branch  
   
git co $id          # 把某次歷史提交記錄checkout出來,但無分支信息,切換到其他分支會自動刪除  
git co $id -b <new_branch>  # 把某次歷史提交記錄checkout出來,創(chuàng)建成一個分支  
   
git br -d <branch>  # 刪除某個分支  
git br -D <branch>  # 強制刪除某個分支 (未被合并的分支被刪除的時候需要強制)  

git merge <branch>               # 將branch分支合并到當(dāng)前分支  
git merge origin/master --no-ff  # 不要Fast-Foward合并,這樣可以生成merge提交  
   
git rebase master <branch>       # 將master rebase到branch,相當(dāng)于:  
git co <branch> && git rebase master && git co master && git merge <branch>  

git暫存

git stash                        # 暫存  
git stash list                   # 列所有stash  
git stash apply                  # 恢復(fù)暫存的內(nèi)容  
git stash drop                   # 刪除暫存區(qū)  

遠程分支管理

git pull                         # 抓取遠程倉庫所有分支更新并合并到本地  
git pull --no-ff                 # 抓取遠程倉庫所有分支更新并合并到本地,不要快進合并  
git fetch origin                 # 抓取遠程倉庫更新  
git merge origin/master          # 將遠程主分支合并到本地當(dāng)前分支  
git co --track origin/branch     # 跟蹤某個遠程分支創(chuàng)建相應(yīng)的本地分支  
git co -b <local_branch> origin/<remote_branch>  # 基于遠程分支創(chuàng)建本地分支,功能同上  
   
git push                         # push所有分支  
git push origin master           # 將本地主分支推到遠程主分支  
git push -u origin master        # 將本地主分支推到遠程(如無遠程主分支則創(chuàng)建,用于初始化遠程倉庫)  
git push origin <local_branch>   # 創(chuàng)建遠程分支, origin是遠程倉庫名  
git push origin <local_branch>:<remote_branch>  # 創(chuàng)建遠程分支  
git push origin :<remote_branch>  #先刪除本地分支(git br -d <branch>),然后再push刪除遠程分支

#創(chuàng)建一個分支  
git branch iss53  
  
#切換工作目錄到iss53  
git chekcout iss53  
  
#將上面的命令合在一起,創(chuàng)建iss53分支并切換到iss53  
git chekcout –b iss53  
  
#合并iss53分支,當(dāng)前工作目錄為master  
git merge iss53  
  
#合并完成后,沒有出現(xiàn)沖突,刪除iss53分支  
git branch –d iss53  
  
#拉去遠程倉庫的數(shù)據(jù),語法為 git fetch [remote-name]  
git fetch  
  
#fetch 會拉去最新的遠程倉庫數(shù)據(jù),但不會自動到當(dāng)前目錄下,要自動合并  
git pull  
  
#查看遠程倉庫的信息  
git remote show origin  
  
#建立本地的dev分支追蹤遠程倉庫的develop分支  
git checkout –b dev origin/develop  

遠程倉庫管理

git remote -v                    # 查看遠程服務(wù)器地址和倉庫名稱  
git remote show origin           # 查看遠程服務(wù)器倉庫狀態(tài)  
git remote add origin git@ github:robbin/robbin_site.git         # 添加遠程倉庫地址  
git remote set-url origin git@ github.com:robbin/robbin_site.git # 設(shè)置遠程倉庫地址(用于修改遠程倉庫地址)  
git remote rm <repository>       # 刪除遠程倉庫  

git clone --bare robbin_site robbin_site.git  # 用帶版本的項目創(chuàng)建純版本倉庫  
scp -r my_project.git git@ git.csdn.net:~      # 將純倉庫上傳到服務(wù)器上  
   
mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服務(wù)器創(chuàng)建純倉庫  
git remote add origin git@ github.com:robbin/robbin_site.git    # 設(shè)置遠程倉庫地址  
git push -u origin master                                      # 客戶端首次提交  
git push -u origin develop  # 首次將本地develop分支提交到遠程develop分支,并且track  
   
git remote set-head origin master   # 設(shè)置遠程倉庫的HEAD指向master分支  

git branch --set-upstream master origin/master  
git branch --set-upstream develop origin/develop  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,119評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,382評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,038評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,853評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,616評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,112評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,192評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,355評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,869評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,727評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,928評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,467評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,165評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,570評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,813評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,585評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,892評論 2 372

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,781評論 18 139
  • 第一章 安裝Git工具 下載GitHub for Windows,直接點擊安裝,安裝完成后,可以看到“Git Sh...
    不圓的石頭閱讀 11,898評論 5 63
  • self.table= [[UITableViewalloc]initWithFrame:CGRectMake(0...
    seventhboy閱讀 284評論 0 0
  • 大家好,我是一名十一歲的六年級學(xué)生。我從九歲就開始學(xué)習(xí)做飯了! 現(xiàn)在你的父母還在為你做飯嗎?我們現(xiàn)在長大了,是時候...
    樓蘭少年閱讀 512評論 6 8
  • 荀子曾言:與人善言,暖于布帛;傷人之言,深于矛戟。能夠口出善言,何必出口傷人呢? 好好說話的人,就像冬日里的陽光,...
    人間最美是清歡閱讀 294評論 3 5