大漠駝鈴

          置身浩瀚的沙漠,方向最為重要,希望此blog能向大漠駝鈴一樣,給我方向和指引。
          Java,Php,Shell,Python,服務(wù)器運(yùn)維,大數(shù)據(jù),SEO, 網(wǎng)站開發(fā)、運(yùn)維,云服務(wù)技術(shù)支持,IM服務(wù)供應(yīng)商, FreeSwitch搭建,技術(shù)支持等. 技術(shù)討論QQ群:428622099
          隨筆 - 238, 文章 - 3, 評(píng)論 - 117, 引用 - 0
          數(shù)據(jù)加載中……

          Git常用的11個(gè)命令整理

          1 git clone
          git clone https://github.com/bcit-ci/CodeIgniter.git                        只克隆
          git clone https://username@github.com/bcit-ci/CodeIgniter.git        攜帶用戶名
          https://username:password@github.com/bcit-ci/CodeIgniter.git       攜帶用戶名和密碼
          2.git add -A
          git add -A  #提交所有的文件,所有tracked文件中被修改過或已刪除文件和所有untracted的文件信息添加到索引庫
          git add  .   #提交當(dāng)前目錄
          git add  -u  #add to index only files modified or deleted and not those created 
          git add -i   #查看中被所有修改過或已刪除文件但沒有提交的文件
          [s]tatus:  查看當(dāng)前的文件狀態(tài)
          [u]pdate: 把已經(jīng)tracked的文件添加到索引庫中
          [r]evert: 把已經(jīng)添加到索引庫中的文件從索引庫中剔除。
          [a]dd untracked 把已經(jīng)tracked的文件添加到索引庫中
          [p]atch  
          [d]iff: 可以比較索引庫中文件和原版本的差異
          [q]uit: 退出git add -i命令系統(tǒng)
          [h]elp:
          3.git commit -m
          一般倉庫中的文件可能存在于這三種狀態(tài):
              1)Untracked files → 文件未被跟蹤;
              2)Changes to be committed → 文件已暫存,這是下次提交的內(nèi)容;
              3) Changes bu not updated → 文件被修改,但并沒有添加到暫存區(qū)。如果 commit 時(shí)沒有帶 -a 選項(xiàng),這個(gè)狀態(tài)下的文件不會(huì)被提交。

          git commit 提交暫存區(qū)里的內(nèi)容
          git commit -a  除了將暫存區(qū)里的文件提交外,還提交 Changes bu not updated 中的文件。
          git commit -a -m "info"
          git commit --amend 
          git commit --amend -a #又或者我們發(fā)現(xiàn)在提交時(shí)忘記使用 -a 選項(xiàng),導(dǎo)致 Changes bu not updated 中的內(nèi)容沒有被提交,我們可以使用
          #
          reference:http://www.cnblogs.com/eddy-he/archive/2012/03/22/git_commit.html
          4.git push
             git pull
             git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>
          #比如,取回origin主機(jī)的next分支,與本地的master分支合并,需要寫成下面這樣。
          git pull origin next:master
          #如果遠(yuǎn)程分支是與當(dāng)前分支合并,則冒號(hào)后面的部分可以省略。
          git pull origin next
          相當(dāng)于:
          git fetch origin
          git merge origin/next
          #如果當(dāng)前分支與遠(yuǎn)程分支存在追蹤關(guān)系,git pull就可以省略遠(yuǎn)程分支名。
           git pull origin
          #如果當(dāng)前分支只有一個(gè)追蹤分支,連遠(yuǎn)程主機(jī)名都可以省略。
          git pull
             

          5.git config --global user.name
             git config --global user.email
             git config --global  credential.helper store
             設(shè)置用戶名和郵箱,設(shè)置存儲(chǔ)密碼
          6.git fetch
             獲取遠(yuǎn)程的更新
          7.git merge
            合并更新
          8.git  stash (這個(gè)功能大家爭(zhēng)議比較多)
          備份當(dāng)前的工作區(qū)的內(nèi)容,從最近的一次提交中讀取相關(guān)內(nèi)容,讓工作區(qū)保證和上次提交的內(nèi)容一致。同時(shí),將當(dāng)前的工作區(qū)內(nèi)容保存到Git棧中。
          git stash pop:
           從Git棧中讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容。由于可能存在多個(gè)Stash的內(nèi)容,所以用棧來管理,pop會(huì)從最近的一個(gè)stash中讀取內(nèi)容并恢復(fù)。
          git stash list:
             顯示Git棧內(nèi)的所有備份,可以利用這個(gè)列表來決定從那個(gè)地方恢復(fù)。
          git stash clear:
          清空Git棧。此時(shí)使用gitg等圖形化工具會(huì)發(fā)現(xiàn),原來stash的哪些節(jié)點(diǎn)都消失了。

          使用git的時(shí)候,我們往往使用branch解決任務(wù)切換問題,例如,我們往往會(huì)建一個(gè)自己的分支去修改和調(diào)試代碼, 如果別人或者自己發(fā)現(xiàn)原有的分支上有個(gè)不得不修改的bug,我們往往會(huì)把完成一半的代碼 commit提交到本地倉庫,然后切換分支去修改bug,改好之后再切換回來。這樣的話往往log上會(huì)有大量不必要的記錄。其實(shí)如果我們不想提交完成一半或者不完善的代碼,但是卻不得不去修改一個(gè)緊急Bug,那么使用'git stash'就可以將你當(dāng)前未提交到本地(和服務(wù)器)的代碼推入到Git的棧中,這時(shí)候你的工作區(qū)間和上一次提交的內(nèi)容是完全一樣的,所以你可以放心的修 Bug,等到修完Bug,提交到服務(wù)器上后,再使用'git stash apply'將以前一半的工作應(yīng)用回來。也許有的人會(huì)說,那我可不可以多次將未提交的代碼壓入到棧中?答案是可以的。當(dāng)你多次使用'git stash'命令后,你的棧里將充滿了未提交的代碼,這時(shí)候你會(huì)對(duì)將哪個(gè)版本應(yīng)用回來有些困惑,'git stash list'命令可以將當(dāng)前的Git棧信息打印出來,你只需要將找到對(duì)應(yīng)的版本號(hào),例如使用'git stash apply stash@{1}'就可以將你指定版本號(hào)為stash@{1}的工作取出來,當(dāng)你將所有的棧都應(yīng)用回來的時(shí)候,可以使用'git stash clear'來將棧清空。
          在這里順便提下git format-patch -n , n是具體某個(gè)數(shù)字, 例如 'git format-patch -1' 這時(shí)便會(huì)根據(jù)log生成一個(gè)對(duì)應(yīng)的補(bǔ)丁,如果 'git format-patch -2' 那么便會(huì)生成2個(gè)補(bǔ)丁,當(dāng)然前提是你的log上有至少有兩個(gè)記錄。


          stash的話一定是基于某個(gè)版本的,而且將stash從棧內(nèi)拿出來,一定是需要還原到對(duì)應(yīng)的版本。通過git stash list可以清晰的看到每個(gè)stash對(duì)應(yīng)的版本,如:
          stash@{0}: WIP on master: e95dc37 Require administrator authority...
          stash@{1}: WIP on md_develop: fcaa18f Add an object to recieve md...
          比如你需要恢復(fù)stash@{1}這時(shí)候你需要做的是:
          git checkout fcaa18f
          git stash apply stash@{1}
          盡量不使用類似git stash pop的方法。如果你當(dāng)前fcaa18f所在的分支有繼續(xù)往前推進(jìn)的話,建議在fcaa18f上建立新的分支,然后繼續(xù)stash@{1}的修改,并將stash@{1}的內(nèi)容提交到新的分支上:
          git branch new_develop
          git checkout new_develop
          git add FILES
          git commit
          后續(xù)再通過cherry-pick的方式,將修改的內(nèi)容應(yīng)用到其他需要這個(gè)修改的分支之上
          #reference :http://www.cppblog.com/deercoder/archive/2011/11/13/160007.html
           9.git log
          10.git status
          11:git show

          posted on 2015-01-22 08:32 草原上的駱駝 閱讀(1494) 評(píng)論(0)  編輯  收藏 所屬分類: Linux

          主站蜘蛛池模板: 筠连县| 定日县| 兴义市| 桂东县| 新野县| 绥棱县| 资讯 | 景泰县| 正镶白旗| 镇安县| 乐亭县| 牡丹江市| 思南县| 汉中市| 定西市| 民和| 宾川县| 库伦旗| 清水河县| 周口市| 洛南县| 华池县| 临汾市| 涞源县| 泾源县| 攀枝花市| 盐边县| 福鼎市| 南靖县| 阿瓦提县| 武山县| 仁怀市| 黎川县| 探索| 延津县| 宁强县| 临猗县| 诸城市| 昌都县| 高平市| 黑河市|