Git、GitHub項目常用操作命令指南

Git 常用命令操作教程 [附Git中文官方操作指南]

  • 強烈建議
    建議大家親手查看Git中文官方操作指南,還有 PDF 和 電子書 可以下載!

  • 主要用途
    團隊合作和版本控制

  • 安裝
    window 系統直接從Git官網下載安裝程序
    使用 Git 獲取升級:
    $ git clone git://git.kernel.org/pub/scm/git/git.git

  • 常用命令

    • git init 初始化文件夾,出現隱藏文件夾 .git
    • git add <files> 將更改的文件添加到待提交的狀態
    • git commit -m 'xxx' 提交被修改過的文件到倉庫 給 git commit 加上 -a 選項,Git 就會自動把所有已經跟蹤過的文件暫存起來一併提交,從而跳過 git add 步驟
    • git status 獲取當前 repository 的狀態(是否有修改等)
    • git diff 查看工作目錄中當前文件和暫存區域快照之間的差異,也就是修改之後還沒有暫存起來的變化內容。
    • git diff --cached 查看已暫存的將要添加到下次提交裏的內容(已暫存和已提交的不同)
    • git log -p -2 查看提交記錄、commit id 以便在版本回退時使用, -p 顯示每次提交差異 -2 最近兩次提交 git log -pretty=oneline 簡化輸出信息
    • git relog 記錄每次提交的命令,可以通過這個記錄回到最新的版本
    • 版本回退
      • git reset --hard HEAD^

        參數:HEAD^ 上個版本,HEAD^^ 上上個版本,前N個版本 HEAD~N
        如果因爲誤操作或者其他原因需要再次回到最新版本,則需要 commit id 上場了:git reset --hard commit_id
        根據 git log 或者 git reflog 得到的 commit id 在不同版本間切換

    • git diff HEAD -- 文件名 查看當前工作區和版本庫中的 某文件 有什麼不同
    • git checkout -- file 撤銷修改,回到最近一次 commit 或者 add 時的狀態
    • git reset HEAD file 將暫存區的修改回退到工作區
    • git rm file 刪除文件
    • …Or create a new repository on the command line

      echo "# gittest" >> README.md  
      git init  
      git add README.md  
      git commit -m "first commit"  
      git remote add origin [email protected]:youraccount/yourprojectname.git  
      (如果出現錯誤 fatal: remote origin already exists , 則 git remote rm origin 再執行上條命令)
      git push -u origin master  
      
      參數說明:-u :由於遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支  
               內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送  
               或者拉取時就可以簡化命令,使用 git push origin master 即可。  
               master: 推送 master 分支
      
    • …Or push an existing repository from the command line

      git remote add origin [email protected]:youraccount/yourprojectname.git
      git push -u origin master  
      
    • 克隆倉庫

      $ git clone [email protected]:jerryhanjj/gittest.git
      Cloning into 'gittest'...
      remote: Counting objects: 3, done.
      remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
      Receiving objects: 100% (3/3), done.  
      
    • 分支管理*[一個很神奇的東西]*

      • 創建分支名 git branch 分支名
      • 切換分支 git checkout 分支名
      • 一步到位(創建並切換) git checkout -b 分支名
      • 合併分支 git merge 分支名 如果遇到合併衝突,需要手動解決
        • $ git merge --no-ff -m "提交信息" 分支名 禁用 Fast forward 合併模式,可以保留歷史分支信息
      • 刪除分支 git branch -d 分支名,若該分支未被合併則報錯,-D 強制刪除
      • git branch
        • -v 最後一次提交信息
        • -vv 這會將所有的本地分支列出來並且包含更多的信息,如每一個分支正在跟蹤哪個遠程分支與本地分支是否是領先、落後或是都有。
        • --merged 已被合併的分支(可以刪除)
        • --no-merged 未被合併分支
      • $ git log --graph --pretty=oneline --abbrev-commit 查看分支合併圖

        $ git log --graph --pretty=oneline --abbrev-commit
        *   916eac9 (HEAD -> master) merge dev with no-ff
        |\
        | * 1a1f2f3 change pro on dev
        |/
        * ff89d5e fz
        * a146f81 (origin/master, origin/HEAD) add pro.md
        * bfca575 remove project.md
        * 0e79ea5 project.md
        * 4ce4618 project.md
        * ec0e6db first commit
        
    • 多人協作
      • 創建 dev 等分支進行開發
      • 把 dev 分支 push 到遠程(GitHub) dev 分支上。如果推送失敗,出現 衝突 先用git pull把最新的提交從 dev 抓下來,然後,在本地合併,解決衝突,再推送。
      • 再由 dev 推到 master 主分支上
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章