Git命令的10大冷門妙用

尛沫發表於2014-03-28

同生活中的許多偉大事件一樣,Git 誕生於一個極富紛爭大舉創新的年代。現在和大家分享一些很有用的 Git 命令,其中很多用法你可能都不知道,無論你是工作在團隊環境中或在您的個人專案中,這些命令將對你幫助很大,讓你可以更加高效的進行專案開發,更輕鬆愉快的工作和生活。

  1. 匯出最後一次提交修改過的檔案
    我一直在使用這個命令定期進行傳送給其他人進行審查/整合。這條命令將把近期提交的修改過的檔案匯出到一個zip檔案。

    1  
    git archive -o ../updated.zip HEAD $(gitdiff --name-only HEAD^)
    
  2. 匯出兩次提交之間修改過的檔案
    同樣,如果你需要匯出兩次提交之間修改過的檔案,你可以用這一個。

    1
    git archive -o ../latest.zipNEW_COMMIT_ID_HERE $(git diff --name-only OLD_COMMIT_ID_HERENEW_COMMIT_ID_HERE)
    
  3. 克隆一個特定的遠端分支
    如果你想從遠端倉庫克隆特定的一個分支,這條命令對你很有用:

    1
    2
    3
    git init 
    git remote add -t BRANCH_NAME_HERE -forigin REMOTE_REPO_URL_PATH_HERE 
    git checkout BRANCH_NAME_HERE
    
  4. 從無關的本地倉庫應用補丁
    如果你需要申請從提交的一些其他不相關的創庫到本地儲存庫,這裡是一個快捷的方式:

    1
    git--git-dir=PATH_TO_OTHER_REPOSITORY_HERE/.git format-patch -k -1 --stdoutCOMMIT_HASH_ID_HERE| git am -3 -k
    
  5. 檢查您的分支變化是是否其他分支的一部分
    cherry命令可以讓你檢查你的分支的變化是否存在於其他一些分支之中。它會顯示在當前分支相對於給定的分支的修改,用+-標誌提示提交合並與否。+表示不存在,而-表示存在於給定的分支。

    1
    2
    3
    git cherry -v OTHER_BRANCH_NAME_HERE
    #For example: to check with masterbranch 
    git cherry -v master
    
  6. 啟動一個無歷史的新分支
    有時候,你需要啟動一個新的分支,同時想摒棄歷史資訊,例如,你想將程式碼放在公共領域(開源)又不想共享歷史資訊。

    1
    git checkout --orphan NEW_BRANCH_NAME_HERE
    
  7. 在不切換分支的情況下從其他分支檢出檔案
    下面的命令是從其他分支獲取檔案,而不用切換分支。

    1
    git checkout BRANCH_NAME_HERE --PATH_TO_FILE_IN_BRANCH_HERE
    
  8. 忽略跟蹤檔案的修改
    如果你工作在一個團隊,他們都是工作在同一個分支,你需要頻繁地讀取/合併檔案。但是有時復位了你環境的特定配置,你必須在合併後每一次都再改一下。使用這個命令,你可以忽略更改特定的檔案:

    1
    git update-index --assume-unchangedPATH_TO_FILE_HERE
    
  9. 檢查提交的修改是否釋出版本的一部分
    這個name-rev命令可以告訴你提交相對於最新發布版本的位置。利用這一點,你可以檢查你的變化是否釋出版本的一部分。

    1
    git name-rev --name-only COMMIT_HASH_HERE
    
  10. 使用 pull rebase 操作替代 merge
    如果你工作的團隊正工作在同一個分支,那麼你所要做的獲取/合併或經常拉取。分支合併的 git 記錄與合併提交時提示功能分支被併入主幹。但在多個團隊成員工作的同一分支的情況下,經常合併導致在日誌中多個合併的訊息引起混亂。所以你可以使用 pull rebase,以保持歷史資訊清除了無用合併的訊息。

    1
    git config branch.BRANCH_NAME_HERE.rebasetrue
    

    此外,您可以配置一個特定的分支總是衍合:

    1
    git pull --rebase 
    

本文為Anyforweb技術分享部落格,需要了解網站建設相關,請訪問anyforweb.com。

相關文章