git 指令整理

來源:互聯網
上載者:User

雖然一直有使用git,但是一直也僅僅是使用了有限的幾個命令,最近用兩天時間整理了下工作中可能用到的git指令,放在這裡作為以後的參考:

git工具主要包含以下指令:
version configadd // staging(cache)當前修改到 INDEX(暫且理解為緩衝區)am // apply + commit, 套用patch並且commitapply // 套用patchbranch //用於分支的管理,包括建立,刪除,重新命名等常用操作checkout //用於分支的切換clone //拷貝Repositorycommit //提交修改diff //比較工具fetch // 擷取遠端分支的修改format-patch // 產生patchinit //初始化gitlog //查看logmv //重新命名pull // fetch + merge, 擷取遠端分支的修改併合並push // 推送當前分支的修改到遠端的repositoryrebase // 重定基reset // 取消指定的commit,或者取消stagerevert // 反轉提交rm // 刪除檔案,並且把刪除檔案的操作添加到stage中show // 查看commit,tag等詳細資料stash // 一個緩衝機制status // 查看git狀態gitk //圖形化介面查看當前分支的所有comit,類似與gitlog的GUI版本
大部分git命令需要當前目前目錄(或者目前的目錄的祖先目錄)存在.git檔案夾才能執行,除了以下情形:1. git config --global XXXX XXXX //git 全域設定2. git init //初始化git3. git clone // 拷貝repository
以下記錄一些比較有用的命令和參數:git config [--global] user.name xxx //設定使用者命git config [--global] user.email xxx  //設定使用者郵箱git config [--global] color.ui auto     // 設定顏色方案為auto
git init --bare //初始化一個git repository,該倉庫為裸庫,不包含work tree(即該repository僅作為伺服器使用,預設不提供編輯功能)。
PS : 該命令不會在目前的目錄下建立.git檔案夾,而是產生branches、hooks、info、objects、refs檔案夾和config、description、HEAD檔案。其實,這些內容就是.git檔案夾內的內容,因為bare庫並非工作空間,所以git把這些內容顯示的顯示出來了,而不是隱藏在.git檔案夾內。
再PS: 確定一個repository是否為bare庫的關鍵在於core.bare屬性(boolean型屬性)。core.bare屬性可以有git config命令設定,也可以通過修改config檔案的方式設定。
git remote add origin ssh://xxxxxx //添加remote
git status //查看狀態:包括三種檔案的狀態:untracking (未納入版本控制的檔案), unstaged(納入了版本控制,但是未儲存到index中的),staged(已儲存到index中)
git init //在根目錄建立一個.git檔案夾,用於把目前的目錄下的檔案納入git管理。
git clone ssh://xxxxxxx [-b master] //拷貝repository到本地PS: -b參數可以指定分支,git會在本地建立指定的同名分支,並且track origin上的對應分支。再PS: 如果未指定-b參數,則git會在本地建立origin上的當前分支的同名分支,並建立trach關係。
git branch //查看本地分支git branch -r // 查看遠端分支git branch -a // 查看所有分支(包括本地和遠端)git branch -avv // 查看所有分支,並顯示track關係git branch master // 建立master 分子git branch mv master1 master2 //重新命名master1分支為master2分支git branch [-d|-D] master //刪除master分支,-D為強制移除git branch --track origin/master master //建立一個master分支,此分支track origin伺服器上的master分支
git check out master //檢出master分支git checkout --track origin/master -b master // git branch --track origin/master master + checkout mastergit checkout <file> //恢複work tree上的修改到HEAD,已經staged的修改會被保留git checkout . //恢複所有納入版本控制的檔案的修改到HEAD,已經staged的修改會被保留
git add 123.txt // 添加123.txt檔案的修改到index, 如果123.txt為untrack(123.txt為新檔案,未納入版本控制),則在index中添加new記錄。git add . // 添加目前的目錄下所有new,和motify修改到index中
git rm 123.txt // 刪除123.txt檔案,並且在index中添加delete記錄。
git commit // 提交stage中的修改git commit -a // git add . + git commitgit commit -m "xxxxx" // 以指定的資訊為log,若未指定-m參數,則開啟im(vim?)輸入loggit commit -am  “xxxxx” // git commit -a -m “xxxxx”
git diff <file name>// 比較當前work tree和index之間的差別git diff --chached //比較當前index與HEAD之間的差別git diff --staged // 同 --chachedgit giff <comit1> <commit2> //比較兩次commit之間的差異
git push [-u] origin master // 推送當前分支上的修改到origin的master分支, -u 參數為可選,可以建立tracking關係,執行一次以後,可以用git push不帶餐推送修改git push // 根據tracker關係,推送修改到remote端
git pull origin master // 提取origin的修改到當前本地分支上git pull //根據tracker關係,提取remote端修改,並merge到當前分支
git revert HEAD~3 //反轉提交最近的第4個commit(反轉最近的commit為 git revert HEAD)git revert HEAD commit1 commit2 //反轉提交 commit1 和commit2git revert HEAD commit1..commit2 //反轉提交commit1(不包括)到commit2(包括)之間的commitPS: 反轉提交是指,產生一個新的commit,該commit的內容與指定的commit內容相反。
git reset // 把index內的修改返回到work tree中,相當與git add .的反操作,並不影響work tree中檔案的內容git reset --soft HEAD~2 // 取消最近第2次commit以來的所有commit,並將commit的修改儲存在index中,worktree不受影響git reset --hard HEAD~2 // 取消最近2次commit以來的所有commit,清空index,並將work tree恢複到最近的第3次commit以後的狀態
git stash // 儲存當前work tree的修改和index的修改,並恢複work tree 到HEAD狀態git stash pop // 提取並應用stash中儲存的修改git stash clear // 清空緩衝的stash修改
git rebase master test // master分支重定基到test分支上,以如下步驟進行:1. 首先尋找到test和master上重合的最後一個commit0,2. 把master分支恢複到commit0的狀態,儲存master分支上從commit0開始的所有commit3. 從commit0開始,把test分支從commit0開始的所有commit依次應用到master分支上4. 把剛才儲存的master分支上所有從commit0開始的commit依次應用到master分支上詳情:http://www.cnblogs.com/kym/archive/2010/08/12/1797937.html
git merge test //把test分支合并到當前分支上
git mergetool //調用merge工具解決conflictsPS: mergetool 命令會調用 merge.tool 所指定的工具來,可以用git config設定
git format-patch -1 //產生最近一個commit的patchgit format-patch master //產生所有當前分支上有,但是在master上沒有的commit的patch
git am <patch-file> //應用patch 檔案,並commitPS: 如果執行git am <patch-file> 發生previous rebase directory ../.git/rebase-apply still exists but mbox given錯誤,可以先執行git am --abort後再執行git am









聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.