Git常用操作命令

公司一直在使用svn進(jìn)行開發(fā),今天得閑又看了看Git管理代碼的常用操作,總結(jié)一下昭灵。

Git安裝

  • 查看是否安裝了git
$ git
  • homebrew安裝
$ brew install git
  • 安裝完成后設(shè)置用戶名和郵箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

創(chuàng)建版本庫

  • 創(chuàng)建文件夾(有項(xiàng)目文件夾略過),pwd顯示當(dāng)前目錄
 $ mkdir "documentName"
 $ cd "documentName"
 $ pwd
  • git init 將當(dāng)前目錄變成Git可以管理的倉庫
$ git init
  • 創(chuàng)建文件养篓,并添加到倉庫緩存區(qū)。add僅僅是添加到一個緩存區(qū)赂蕴,并沒有真正存到倉庫里
 $ touch "filename"
 $ git add "filename"
  • 提交文件到倉庫 -m是提交說明
$ commit -m "add a new file"

注:commit之前可以add多個文件,最后一起提交

倉庫管理指令

  • status查看倉庫狀態(tài):比如說是否有文件修改柳弄、是否add了等等。建議每次提交之前都查看一下倉庫狀態(tài)概说。
$ git status
  • 查看文件修改內(nèi)容
$ git diff "filename"
  • 查看版本提交歷史記錄
$ git log

也可以

$ git log --pretty=oneline
  • 版本退回
$ git reset --hard HEAD^     //退回上個版本
$ git reset --hard HEAD^^    //退回上上個版本
$ git reset --hard HEAD~n    //退回上n個版本
$ git reset --hard 3628164   //退回`commit id`為3628164的版本碧注,`git log`可以查看到`commit id`
  • 查看文件內(nèi)容
 $cat "filename"
  • 撤銷工作區(qū)的修改,即撤銷你在上次addcommit之后對文件的改動糖赔。
$ git checkout -- "filename"
  • 撤銷已經(jīng)在緩存區(qū)的修改萍丐,即撤銷你在上次add之后對文件的改動。
$ git reset HEAD "filename"

換句話來解釋上面的兩個撤銷操作:如果是撤銷到add之前的修改用reset放典,還要撤銷這個修改逝变,就再使用checkout

  • 刪除文件
    在本地文件夾刪除
$ rm "filename"

從倉庫刪除文件

$ git rm "fliename"
$ git commit -m "remove filename"

如果是本地誤刪了文件奋构,可以重新checkout恢復(fù)壳影,前提是沒有從倉庫刪除該文件。

$ git checkout -- "filename"

遠(yuǎn)程倉庫操作

  • 本地Git倉庫和GitHub倉庫關(guān)聯(lián)
    如果是公司需要可以自己搭建Git服務(wù)器声怔,這里僅記錄一下和github網(wǎng)站關(guān)聯(lián)
    1,創(chuàng)建SSH Key舱呻。查看用戶/用戶名/.ssh是否存在(一般mac是這個路徑)醋火,如果有悠汽,再看看這個目錄下有沒有id_rsaid_rsa.pub這兩個文件,如果已經(jīng)有了芥驳,可直接跳到下一步柿冲。如果沒有,打開Shell兆旬,創(chuàng)建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com" //這個郵箱是你本地git設(shè)置的郵箱

2假抄,登陸GitHub,打開“Account settings”丽猬,“SSH Keys”頁面把 id_rsa.pub的內(nèi)容粘貼到key里宿饱。
3,在github上 “Create repository”脚祟,就是創(chuàng)建了一個遠(yuǎn)程空倉庫谬以,現(xiàn)在可以把這個倉庫clone下倆,然后添加你已經(jīng)存在的項(xiàng)目由桌,也可以將本地倉庫與之關(guān)聯(lián)为黎,然后push項(xiàng)目文件。
我以test倉庫為例行您,我本地git init了一個test倉庫,在github上創(chuàng)建了一個test遠(yuǎn)程倉庫铭乾,不同名也無所謂,不亂就行娃循。在本地test倉庫下執(zhí)行下面命令進(jìn)行關(guān)聯(lián):

$ git remote add origin git@github.com:your_github_name/test.git

origin就是git默認(rèn)的遠(yuǎn)程庫別名炕檩,你也可以通過下面命令進(jìn)行修改:

$git remote rename origin mynewalias
  • 拉取遠(yuǎn)程倉庫代碼到本地:
$ git pull -u origin master
  • 推送本地倉庫內(nèi)容到遠(yuǎn)程倉庫:
$ git push -u origin master

注:如果你的id_rsa添加了密碼,這步會讓你輸入密碼淮野;-u是第一次推送時需要添加的捧书,會同步本地master分支和遠(yuǎn)程master分支。

  • clone遠(yuǎn)程倉庫到本地
$ git clone git@github.com:your_github_name/test.git

分支管理

dev為分支名舉例

  • 創(chuàng)建并切換分支
$ git checkout -b dev

或者:

$ git branch dev        // 新建dev分支
$ git checkout dev    //切換到dev分支
  • 查看分支:*代表當(dāng)前所處分支
$ git branch
      * dev
      master
  • 合并分支到當(dāng)前分支
$ git merge dev
  • 刪除分支
$ git branch -d dev
  • 解決分支沖突
    存在沖突時骤星,分支合并會失敗经瓷,并顯示沖突的文件有哪些。打開沖突文件洞难,可以看見Git用<<<<<<<舆吮,=======>>>>>>>標(biāo)記出不同分支的內(nèi)容队贱,我們打開文件并保留需要的修改色冀,刪除git標(biāo)記后保存,再重新提交即可:
$ git add configfile 
$ git commit -m "conflict fixed"
  • 查看分支合并圖:
$ git log --graph --pretty=oneline --abbrev-commit
  • 禁用Fast forward模式
    Fast forward模式是默認(rèn)的柱嫌,刪除分之后會丟失分支信息锋恬。
    合并時禁用Fast forward模式:
$ git merge --no-ff -m "merge with no-ff" dev
  • 存儲臨時工作現(xiàn)場:目的是突然需要打斷當(dāng)前工作時,去干另一件事的時候(比如解決bug去了)编丘,而當(dāng)前工作又不能先提交時与学,可以臨時存起來
$ git status

恢復(fù)當(dāng)前工作:

$ git checkout dev   //先切換到當(dāng)時工作的分支
$ git stash list           // 查看臨時保存的工作的位置
$ git stash apply       // 恢復(fù)當(dāng)時的工作
$ git stash drop        // 刪除臨時保存位置的工作彤悔,不需要了就要把地方空出來。

applydrop 也可以合并為pop

$git stash pop

標(biāo)簽管理

給版本添加標(biāo)簽索守,方便查看歷史版本晕窑。tag最好比commitid和-m說明更直觀

  • 創(chuàng)建標(biāo)簽: v1.0為 tag_name
$ git tag v1.0
  • 查看所有標(biāo)簽
$ git tag
  • 給指定commit id 打上標(biāo)簽
$ git tag <tagname> <commit id>
  • 查看指定標(biāo)簽信息
$ git show <tagname>
  • 創(chuàng)建帶說明的標(biāo)簽名
$ git tag -a v0.1 -m "version 0.1 released" 3628164
  • 刪除標(biāo)簽
$ git tag -d v0.1
  • 將標(biāo)簽推送到遠(yuǎn)程
$ git push origin v1.0

或者推送全部

$ git push origin --tags
  • 從遠(yuǎn)程刪除標(biāo)簽:先從本地刪除,然后再推送刪除指令
$ git tag -d v0.1
$ git push origin :refs/tags/v0.1

日常使用的命令差不多就這些吧卵佛,關(guān)于自己搭建遠(yuǎn)程Git服務(wù)器和自定義git配置杨赤、甚至git更多高級操作指令,以后有時間再補(bǔ)上吧截汪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疾牲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挫鸽,更是在濱河造成了極大的恐慌说敏,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丢郊,死亡現(xiàn)場離奇詭異盔沫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)枫匾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門架诞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人干茉,你說我怎么就攤上這事谴忧。” “怎么了角虫?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵沾谓,是天一觀的道長。 經(jīng)常有香客問我戳鹅,道長均驶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任枫虏,我火速辦了婚禮妇穴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隶债。我一直安慰自己腾它,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布死讹。 她就那樣靜靜地躺著瞒滴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赞警。 梳的紋絲不亂的頭發(fā)上妓忍,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天稀并,我揣著相機(jī)與錄音,去河邊找鬼单默。 笑死,一個胖子當(dāng)著我的面吹牛忘瓦,可吹牛的內(nèi)容都是我干的搁廓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼耕皮,長吁一口氣:“原來是場噩夢啊……” “哼境蜕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凌停,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤粱年,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后罚拟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體台诗,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年赐俗,在試婚紗的時候發(fā)現(xiàn)自己被綠了拉队。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡阻逮,死狀恐怖粱快,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叔扼,我是刑警寧澤事哭,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站瓜富,受9級特大地震影響鳍咱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜食呻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一流炕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仅胞,春花似錦每辟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椎眯,卻和暖如春挠将,著一層夾襖步出監(jiān)牢的瞬間胳岂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工舔稀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乳丰,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓内贮,卻偏偏與公主長得像产园,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子夜郁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評論 2 348

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

  • 1)遠(yuǎn)程倉庫相關(guān)命令 檢出倉庫:$ git clone git://github.com/jquery/jquer...
    Jeff_Tsui閱讀 334評論 0 0
  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,458評論 1 26
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,644評論 9 163
  • 有意識地生活什燕,學(xué)習(xí),育兒竞端,記錄自己思維流動的過程屎即,邏輯思考的過程。 有意識事富,有意識技俐,有意識
    freshriver閱讀 103評論 0 0
  • 早餐:關(guān)東煮+兩個醬肉包+一根香蕉+一杯瑪奇朵 午餐:一份疙瘩湯+土豆絲+一個鹵雞腿 下午茶:一杯半塘紅茶+一杯全...
    獨(dú)孤紫龍閱讀 174評論 1 1