Git基礎命令


  創建版本庫
git init #初始化所在目錄爲Git倉庫

初始化的目錄可以不爲空

添加文件到版本庫
git add <file> ...  #添加文件到暫存區(stage)
        -f <file> ...  #強制添加到暫存區(可用於添加忽略文件)
git commit -m "提交說明"  #從暫存區提交到版本庫

git add 命令可多次執行,然後commit一次。

時光機穿梭
  • 查看狀態、差異
git status  #查看倉庫當前狀態
git diff [file]  #比較工作區和暫存區的差異
git diff --cached [file]  #比較暫存區和版本庫的差異
git diff HEAD -- [file]  #比較工作區和版本庫的差異
  • 版本切換
git log  #查看提交歷史
git log -1  #查看最後一次提交信息(-2 則是最後兩次)
git log --pretty=oneline  #單行格式顯示提交歷史
        --graph  #顯示分支合併圖
        --abbrev-commit  #簡寫的commit_id
git reflog  #查看所有操作記錄,包括刪除的commit記錄
git reset --hard HEAD^  #回退到上一版本
# HEAD 表當前版本, HEAD^ 表上一版本,HEAD^^ 表上兩版本,HEAD~99 表上99版本。
git reset --hard commit_id  #切換到指定版本

Git跟蹤管理的是修改,而非文件

  • 撤銷修改
git checkout -- <file>  #撤銷工作區的修改
git reset HEAD <file>  #撤銷暫存區的修改

若已commit但沒提交到遠程庫,可用版本回退進行撤銷

  • 刪除文件

    • 方法一:工作區刪除文件,然後正常提交
    rm <file> ...  #工作區刪除
    git add <file> ...  #將修改提交至暫存區
    git commit -m "說明"  #提交到版本庫
    
    • 方法二:直接命令刪除工作區和暫存區,然後提交版本庫
    git rm <file> ...  #刪除工作區和暫存區文件
    git commit -m "說明"  #提交到版本庫
    

刪除、增加文件也都屬於修改

遠程倉庫
  • 創建SSH Key
ssh-keygen -t rsa -C "[email protected]"  #生成的Key在家目錄.ssh文件夾裏面,pub後綴是公鑰,另一個是私鑰。
  • 添加遠程庫
git remote add origin git@server-name:path/repo-name.git  #添加遠程倉庫
git remote  #查看遠程庫信息
           -v  #顯示詳細信息
git push -u origin <branch>  #推送並關聯指定分支到遠程庫

除第一次關聯,之後push不用加-u選項

  • 從遠程庫克隆
git clone git@server-name:path/repo-name.git  #將遠程倉庫克隆到當前目錄
git pull  #拉取遠程倉庫內容
分支管理
git branch <branch>  #創建分支
git checkout <branch>  #切換到指定分支
git checkout -b <branch>  #創建並切換到該分支
git branch  #查看現有分支
git branch -d <branch>  #刪除指定分支
git branch --set-upstream <branch_local> <branch_remote>  #指定本地分支與遠程分支的鏈接
git merge <branch>  #合併指定分支到當前分支
          --no-ff <branch>  #禁用快速合併
git merge --no-ff -m "提交說明" <branch>  #普通方式合併,並附提交說明
git stash  #保存當前工作環境(包括工作區和暫存區)
git stash list  #查看保存的工作列表
git stash apply [stash@{X}]  #恢復工作狀態,但不刪除stash內容
git stash pop [stash@{X}]  #恢復工作狀態,並刪除stash內容
git stash drop [stash@{X}]  #刪除stash內容
git branch -D <branch>  #強制刪除分支(常用於未合併的分支)

HEAD不是直接指向提交點,而是指向分支,分支再指向提交點

  • 多人協作
##error: failed to push some refs to ...
1. git pull 遠程庫
2. 解決衝突(若有),再push
  • 分支管理策略圖

image

標籤管理
git tag  #查看現有標籤
git tag <tag_name>  #給當前所在的commit打標籤
git tag <tag_name> <commit_id>  #給指定commit打標籤
git tag -a <tag_name> -m "標籤說明" <commit_id>  #給指定commit打標籤,並附說明
        -s <tag_name> -m "標籤說明" <commit_id>  #用gpg私鑰簽名
        -d <tag_name>  #刪除標籤
git show <tag_name>  #顯示標籤信息
git push origin <tag_name>  #推送標籤到遠程庫
git push origin --tags  #推送所有未推送的標籤到遠程庫
git push origin :refs/tags/<tag_name>  #刪除遠程標籤(先刪除本地,再使用該命令刪除)
自定義Git
git config --global user.name "you_name"  #設置全局用戶名
git config --global user.email "[email protected]"  #設置全局郵箱
git config --global color.ui true  #設置全局顏色顯示
git config --global alias.<alias_name> <'command_name'>  #設置別名
  • 忽略特殊文件

    1. 工作區創建.gitignore文件
    2. 內容舉例,如下:
    #Windows:
    Thumbs.db
    ehthumbs.db
    Desktop.ini
    
    #Python:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
    #My configurations:
    db.ini
    deploy_key_rsa
    
git check-ignore -v <file>  #查看忽略該文件的規則

規則有錯時常用上述命令查找定位

  • 配置別名列表
git config --global alias.confg 'config --global'
git confg alias.st status
git confg alias.co checkout
git confg alias.ci commit
git confg alias.br branch
git confg alias.unstage 'reset HEAD'
git confg alias.last 'log -1'
git confg alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)
                   %C(bold blue)<%an>%Creset' --abbrev-commit"


發佈了24 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章