git 常用命令總結(jié)

1委粉、項(xiàng)目提交遠(yuǎn)程

  git init // 初始化git
  git remote add origin 遠(yuǎn)程url // 添加源
  git branch 分支名 // 本地創(chuàng)建一個(gè)分支
  git checkout 分支名 // 切分支
  git push origin master // 提交到遠(yuǎn)程庫
  git push -u origin master // git第一次提交
  git push -u origin master -f // git強(qiáng)制提交到遠(yuǎn)程

2添寺、git stash 緩存

  git stash save '內(nèi)容' // 緩存并標(biāo)注注釋
  git stash show // 展示修改過的文件
  git stash list // 查看緩存列表
  git stash apply index // 釋放緩存列表
  git stash drop stash@{number} // 刪除指定的緩存
  git stash clear // 刪除所有的stash緩存
  git stash list // 展示緩存的列表

3、git clone

  git clone <版本庫的網(wǎng)址>  // 從遠(yuǎn)程克隆一個(gè)版本庫(支持多協(xié)議)

4、git remote

  git remote // 列出所以遠(yuǎn)程主機(jī)
  git remote -v // 查看遠(yuǎn)程主機(jī)的網(wǎng)址
  git remote show <主機(jī)名> // 查看源<查看主機(jī)的詳細(xì)信息>
  git remote add <主機(jī)名> // 添加遠(yuǎn)程主機(jī)
  git remote rm <主機(jī)名> // 刪除遠(yuǎn)程主機(jī)
  git remote rename <原主機(jī)名> <新主機(jī)名> // 遠(yuǎn)程主機(jī)改名

5角寸、git fetch

  git fetch <遠(yuǎn)程主機(jī)名> <分支名> // 取回所有分支(branch)的更新(指定分支名)
  git branch -r // -r 查看遠(yuǎn)程分支  -a選項(xiàng)查看所有分支
  git checkout -b feature-B origin/master // 在master的基礎(chǔ)上創(chuàng)建一個(gè)新分支
  git merge 和 git rebase // 在本地分支上合并遠(yuǎn)程分支

6、git pull

  git pull <遠(yuǎn)程主機(jī)> <遠(yuǎn)程分支名>:<本地分支名> // 取回遠(yuǎn)程主機(jī)某個(gè)分支 和本地的指定分支合并
  // 例 git pull origin master:master 簡(jiǎn)為 git pull origin master 簡(jiǎn)為 git pull origin 簡(jiǎn)為 git pull
  // 分解 git fetch origin  +   git merge origin/master
  git pull --rebase <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名> // rebase選項(xiàng)

7意述、git push

  git push <遠(yuǎn)程主機(jī)> <本地分支名>:<遠(yuǎn)程分支名>
  git push origin master:master|git push origin :master|git push origin|git push
  git push -u origin master (-f)// 第一次提交的時(shí)候(強(qiáng)制提交的時(shí)候)
  git push --all origin // 將所有的本地分支都推到遠(yuǎn)程主機(jī)
  git push --force origin // 強(qiáng)制推送遠(yuǎn)程(盡量避免使用)
  git push origin --tags // 打tages標(biāo)簽

8浴栽、git tag(標(biāo)注版本打tag)

  git tag // 查看版本
  git tag 標(biāo)簽名 // 為歷史版本打標(biāo)簽
  git tag 標(biāo)簽名 該版本ID // 為歷史版本打標(biāo)簽
  git tag -a 標(biāo)簽名 -m '標(biāo)簽說明' [可選:版本ID] // 創(chuàng)建版本(指定標(biāo)簽打tag)
  git tag -d 標(biāo)簽名 // 刪除版本
  git tag -r // 查看遠(yuǎn)程版本
  git show 標(biāo)簽名 // 查看某一標(biāo)簽

9、回退版本撤銷

  // HEAD: 當(dāng)前版本  HEAD^: 上一個(gè)版本 --hard: 參數(shù)會(huì)拋棄當(dāng)前工作區(qū)的修改  --soft: 參數(shù)的話會(huì)回退到之前版
  git reset HEAD . // 撤銷所有add文件  add撤銷
  git reset HEAD -filename // 撤銷單個(gè)add文件
    
  git reset --soft head // 只回退commit信息   commit撤銷
  git reset --hard head^ // 徹底回退到上次commit版本涎劈,不保留修改代碼
    
  git log 查看commit信息 // git push 撤銷
  git revert 以前commit的id
  git push 此時(shí)本地回滾的代碼到服務(wù)器 // over
    
  git checkout [merge操作時(shí)所在的分支] // git merge 撤銷
  git reset --hard [merge前的版本號(hào)] // over
      
  git checkout . // 撤銷所有本地改動(dòng)代碼 
  git reset --hard 遠(yuǎn)程倉庫名 // 本地代碼回退到與git遠(yuǎn)程倉庫一致
    
  git reset --hard HEAD/commit_id // 回滾到歷史版本
  git reset --hard HEAD^ // 回退到上個(gè)版本(HEAD^^ 上上版本)

10广凸、查詢有關(guān)

  git status // 查詢創(chuàng)庫狀態(tài)
  git diff 文件名 // 比較文件差異(在git add之前使用)
  git log // 查看倉庫歷史記錄(詳細(xì))
  git reflog // 查看所有版本的commit ID

git 命令詳解

現(xiàn)在我們有了本地和遠(yuǎn)程的版本庫,讓我們來試著用用Git的基本命令:

git pull:(從其他的版本庫(既可以是遠(yuǎn)程的也可以是本地的)將代碼更新到本地蛛枚,例如:'git pull origin master'就是將origin這個(gè)版本庫的代碼更新到本地的master主枝谅海,該功能類似于SVN的update

git add:是將當(dāng)前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示記入了版本歷史中蹦浦,這也是提交之前所需要執(zhí)行的一步扭吁,例如'git add app/model/user.rb'就會(huì)增加app/model/user.rb文件到Git的索引中,該功能類似于SVN的add

git rm:從當(dāng)前的工作空間中和索引中刪除文件盲镶,例如'git rm app/model/user.rb'智末,該功能類似于SVN的rm、del

git commit:提交當(dāng)前工作空間的修改內(nèi)容徒河,類似于SVN的commit命令系馆,例如'git commit -m story #3, add user model',提交的時(shí)候必須用-m來輸入一條提交信息顽照,該功能類似于SVN的commit

git push:將本地commit的代碼更新到遠(yuǎn)程版本庫中由蘑,例如'git push origin'就會(huì)將本地的代碼更新到名為orgin的遠(yuǎn)程版本庫中

git log:查看歷史日志,該功能類似于SVN的log

git revert:還原一個(gè)版本的修改代兵,必須提供一個(gè)具體的Git版本號(hào)尼酿,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本號(hào)都是生成的一個(gè)哈希值

上面的命令幾乎都是每個(gè)版本控制工具所公有的植影,下面就開始嘗試一下Git獨(dú)有的一些命令:

git branch:對(duì)分支的增裳擎、刪、查等操作思币,例如'git branch new_branch'會(huì)從當(dāng)前的工作版本創(chuàng)建一個(gè)叫做new_branch的新分支鹿响,'git branch -D new_branch'就會(huì)強(qiáng)制刪除叫做new_branch的分支,'git branch'就會(huì)列出本地所有的分支

git checkout:Git的checkout有兩個(gè)作用谷饿,其一是在不同的branch之間進(jìn)行切換惶我,例如'git checkout new_branch'就會(huì)切換到new_branch的分支上去;另一個(gè)功能是還原代碼的作用博投,例如'git checkout app/model/user.rb'就會(huì)將user.rb文件從上一個(gè)已提交的版本中更新回來绸贡,未提交的內(nèi)容全部會(huì)回滾

git rebase:用下面兩幅圖解釋會(huì)比較清楚一些,rebase命令執(zhí)行后,實(shí)際上是將分支點(diǎn)從C移到了G听怕,這樣分支也就具有了從C到G的功能

git reset:將當(dāng)前的工作目錄完全回滾到指定的版本號(hào)捧挺,假設(shè)如下圖,我們有A-G五次提交的版本尿瞭,其中C的版本號(hào)是 bbaf6fb5060b4875b18ff9ff637ce118256d6f20松忍,我們執(zhí)行了'git reset bbaf6fb5060b4875b18ff9ff637ce118256d6f20'那么結(jié)果就只剩下了A-C三個(gè)提交的版本


git stash:將當(dāng)前未提交的工作存入Git工作棧中,時(shí)機(jī)成熟的時(shí)候再應(yīng)用回來筷厘,這里暫時(shí)提一下這個(gè)命令的用法鸣峭,后面在技巧篇會(huì)重點(diǎn)講解

git config:利用這個(gè)命令可以新增、更改Git的各種設(shè)置酥艳,例如'git config branch.master.remote origin'就將master的遠(yuǎn)程版本庫設(shè)置為別名叫做origin版本庫摊溶,后面在技巧篇會(huì)利用這個(gè)命令個(gè)性化設(shè)置你的Git,為你打造獨(dú)一無二的 Git

git tag:可以將某個(gè)具體的版本打上一個(gè)標(biāo)簽充石,這樣你就不需要記憶復(fù)雜的版本號(hào)哈希值了莫换,例如你可以使用'git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20'來標(biāo)記這個(gè)被你還原的版本,那么以后你想查看該版本時(shí)骤铃,就可以使用 revert_version標(biāo)簽名拉岁,而不是哈希值了

Git 之所以能夠提供方便的本地分支等特性,是與它的文件存儲(chǔ)機(jī)制有關(guān)的惰爬。Git存儲(chǔ)版本控制信息時(shí)使用它自己定義的一套文件系統(tǒng)存儲(chǔ)機(jī)制喊暖,在代碼根目錄下有一個(gè).git文件夾,會(huì)有如下這樣的目錄結(jié)構(gòu):
有幾個(gè)比較重要的文件和目錄需要解釋一下:HEAD文件存放根節(jié)點(diǎn)的信息撕瞧,其實(shí)目錄結(jié)構(gòu)就表示一個(gè)樹型結(jié)構(gòu)陵叽,Git采用這種樹形結(jié)構(gòu)來存儲(chǔ)版本信息,那么HEAD就表示根丛版;refs目錄存儲(chǔ)了你在當(dāng)前版本控制目錄下的各種不同引用(引用指的是你本地和遠(yuǎn)程所用到的各個(gè)樹分支的信息)巩掺,它有heads、remotes页畦、stash胖替、tags四個(gè)子目錄,分別存儲(chǔ)對(duì)不同的根豫缨、遠(yuǎn)程版本庫独令、Git棧和標(biāo)簽的四種引用,你可以通過命令'git show-ref'更清晰地查看引用信息州胳;logs目錄根據(jù)不同的引用存儲(chǔ)了日志信息记焊。因此逸月,Git只需要代碼根目錄下的這一個(gè).git目錄就可以記錄完整的版本控制信息栓撞,而不是像SVN那樣根目錄和子目錄下都有.svn目錄。那么下面就來看一下Git與SVN的區(qū)別吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓤湘,隨后出現(xiàn)的幾起案子瓢颅,更是在濱河造成了極大的恐慌,老刑警劉巖弛说,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挽懦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡木人,警方通過查閱死者的電腦和手機(jī)信柿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醒第,“玉大人渔嚷,你說我怎么就攤上這事〕砺” “怎么了形病?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)霞幅。 經(jīng)常有香客問我漠吻,道長(zhǎng),這世上最難降的妖魔是什么司恳? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任途乃,我火速辦了婚禮,結(jié)果婚禮上扔傅,老公的妹妹穿的比我還像新娘欺劳。我一直安慰自己,他們只是感情好铅鲤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布划提。 她就那樣靜靜地躺著,像睡著了一般邢享。 火紅的嫁衣襯著肌膚如雪鹏往。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天骇塘,我揣著相機(jī)與錄音伊履,去河邊找鬼。 笑死款违,一個(gè)胖子當(dāng)著我的面吹牛唐瀑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播插爹,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼哄辣,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼请梢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起力穗,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤毅弧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后当窗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體够坐,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年崖面,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了元咙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巫员,死狀恐怖蛾坯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情疏遏,我是刑警寧澤脉课,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站财异,受9級(jí)特大地震影響倘零,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜戳寸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一呈驶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧疫鹊,春花似錦袖瞻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至枣耀,卻和暖如春霉晕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捞奕。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國打工牺堰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人颅围。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓伟葫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親院促。 傳聞我的和親對(duì)象是個(gè)殘疾皇子筏养,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

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

  • Git常用語法 [TOC] Git簡(jiǎn)介 描述 ? Git(讀音為/g?t/斧抱。)是一個(gè)開源的分布式版本控制系統(tǒng),...
    君惜丶閱讀 3,535評(píng)論 0 13
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照撼玄,而是把代碼倉庫完整的鏡像下來夺姑。這樣一來墩邀,任何一處協(xié)同...
    __silhouette閱讀 15,899評(píng)論 5 147
  • 本片內(nèi)容轉(zhuǎn)自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃兒閱讀 4,933評(píng)論 2 88
  • 項(xiàng)目對(duì)于我們這些初學(xué)者難度還是有些高的眉睹,但是這也對(duì)我們是一種鍛煉荔茬,我相信通過這個(gè)項(xiàng)目,我們都能學(xué)到很多竹海。
    4f36b1b9e290閱讀 138評(píng)論 0 1
  • 沒有炒過的茶葉,是茶葉最原自然的狀態(tài)艰争,只要你對(duì)它的青草味沒有任何厭惡坏瞄,不妨泡著喝,嚼食也沒關(guān)系甩卓,不會(huì)有任何壞處的鸠匀。...
    丙丙鹿閱讀 950評(píng)論 0 1