大漠駝鈴

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

          Git常用的11個命令整理

          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  .   #提交當前目錄
          git add  -u  #add to index only files modified or deleted and not those created 
          git add -i   #查看中被所有修改過或已刪除文件但沒有提交的文件
          [s]tatus:  查看當前的文件狀態
          [u]pdate: 把已經tracked的文件添加到索引庫中
          [r]evert: 把已經添加到索引庫中的文件從索引庫中剔除。
          [a]dd untracked 把已經tracked的文件添加到索引庫中
          [p]atch  
          [d]iff: 可以比較索引庫中文件和原版本的差異
          [q]uit: 退出git add -i命令系統
          [h]elp:
          3.git commit -m
          一般倉庫中的文件可能存在于這三種狀態:
              1)Untracked files → 文件未被跟蹤;
              2)Changes to be committed → 文件已暫存,這是下次提交的內容;
              3) Changes bu not updated → 文件被修改,但并沒有添加到暫存區。如果 commit 時沒有帶 -a 選項,這個狀態下的文件不會被提交。

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

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

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


          stash的話一定是基于某個版本的,而且將stash從棧內拿出來,一定是需要還原到對應的版本。通過git stash list可以清晰的看到每個stash對應的版本,如:
          stash@{0}: WIP on master: e95dc37 Require administrator authority...
          stash@{1}: WIP on md_develop: fcaa18f Add an object to recieve md...
          比如你需要恢復stash@{1}這時候你需要做的是:
          git checkout fcaa18f
          git stash apply stash@{1}
          盡量不使用類似git stash pop的方法。如果你當前fcaa18f所在的分支有繼續往前推進的話,建議在fcaa18f上建立新的分支,然后繼續stash@{1}的修改,并將stash@{1}的內容提交到新的分支上:
          git branch new_develop
          git checkout new_develop
          git add FILES
          git commit
          后續再通過cherry-pick的方式,將修改的內容應用到其他需要這個修改的分支之上
          #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 草原上的駱駝 閱讀(1501) 評論(0)  編輯  收藏 所屬分類: Linux

          主站蜘蛛池模板: 潞城市| 南靖县| 龙海市| 建宁县| 南宫市| 政和县| 城市| 东辽县| 丰都县| 长汀县| 阳西县| 钟祥市| 乐业县| 东安县| 保山市| 临泽县| 绥德县| 大足县| 洪泽县| 黎城县| 美姑县| 台江县| 广饶县| 宝山区| 镇沅| 江永县| 枣强县| 盐津县| 塔河县| 茂名市| 叶城县| 梁山县| 桑日县| 东城区| 诸城市| 永顺县| 平江县| 三穗县| 绿春县| 毕节市| 新和县|