1. 程式人生 > >git 命令大全(完整版)

git 命令大全(完整版)

拉取 str 修改版本 xxx 用戶 command 克隆 單個 sage

Git 常用命令詳解

Git 是一個很強大的分布式版本控制系統。它不但適用於管理大型開源軟件的源代碼,管理私人的文檔和源代碼也有很多優勢。

1.Git文件操作

$ git help [command]                  # 顯示command的help
$ git show [$id]                      # 顯示某次提交的內容 
$ git checkout  [file]                # 拋棄工作區修改
$ git checkout .                      # 拋棄工作區修改
$ git add [file]                      # 將工作文件修改提交到本地暫存區
$ git add .                           # 將所有修改過的工作文件提交暫存區
$ git rm [file]                       # 從版本庫中刪除文件
$ git rm --cached [file]              # 從版本庫中刪除文件,但不刪除文件
$ git reset [file]                    # 從暫存區恢復到工作文件
$ git reset -- .                      # 從暫存區恢復到工作文件
$ git reset --mixed HEAD~1            # 修改版本庫,修改暫存區,保留工作區
$ git reset --soft HEAD~2             # 修改版本庫,保留暫存區,保留工作區
$ git reset --hard HEAD~3             # 修改版本庫,修改暫存區,修改工作區
$ git commit --amend                  # 修改最後一次提交記錄
$ git revert [$id]                    # 恢復某次提交的狀態,恢復動作本身也創建次提交對象
$ git revert HEAD                     # 恢復最後一次提交的狀態
$ git status                          # 查看當前工作區狀態 
$ git config --list                   # 看所有用戶
$ git ls-files                        # 查看已經被提交的文件
$ git commit -a                       # 提交當前repos的所有的改變
$ git commit -v                       # 參數-v可以查看看commit的差異
$ git commit -m "message"             # 提交到本地並添加提交信息
$ git commit -am "init"               # 添加並提交 

$ git log [file]                      # 查看該文件每次提交記錄
$ git log -p [file]                   # 查看每次詳細修改內容的diff
$ git log -p -2                       # 查看最近兩次詳細修改內容的diff
$ git log --stat                      # 查看提交統計信息

$ git rm --cached [file]              # 從暫存區中刪除文件
$ git rm -f [file]                    # 強行移除版本控制的文件
$ git rm -r --cached [file]           # 遞歸刪除-r,是文件夾的時候有用

$ git diff [file]                     # 比較當前文件和暫存區文件差異
$ git diff [$id] [$id]                # 比較兩次提交之間的差異
$ git diff [branch1]..[branch2]       # 在兩個分支之間比較
$ git diff --staged                   # 比較暫存區和版本庫差異
$ git diff --cached                   # 比較暫存區和工作區差異
$ git diff --stat                     # 僅僅比較統計信息

$ git stash                           # 暫存當前正在進行的工作
$ git stash push                      # 將暫存給push到一個臨時空間中
$ git stash list                      # 查看所有緩存的代碼
$ git stash clear                     # 清空緩存區內容
$ git stash drop                      # 移除某個貯藏
$ git stash save                      # 指定message
$ git stash show                      # 查看指定stash的diff
$ git stash apply stash@{1}           # 取出指定的緩存代碼
$ git stash pop                       # 將文件從臨時空間pop下來
$ git fetch origin dev:dev            # 獲取最新版本到本地不會自動merge
$ git pull origin master:master       # 獲取最新版本到本地會自動merge

Git分支操作相關命令

$ git branch                          # 查看分支
$ git branch [dev] [master]           # 在master創建dev分支
$ git branch -v                       # 查看各個分支最後提交信息
$ git branch -r                       # 查看遠程分支信息
$ git branch -a                       # 查看所有分支信息
$ git branch -m [aaa] [bbb]           # 將aaa 重命名為bbb
$ git branch [name]                   # 從當前分支創建分支
$ git branch -d [branch]              # 刪除某個分支
$ git branch -D [branch]              # 強制刪除某個分支
$ git branch --set-upstream-to origin/test master # 本地分支和遠程分支關聯
$ git branch --set-upstream-to=origin/master help #
$ git branch --merged                 # 查看已經被合並到當前分支的分支
$ git branch --no-merged              # 查看尚未被合並到當前分支的分支

$ git commit [$id] -b [new_branch]    # 從歷史提交記錄創建分支
$ git commit [$id]                    # 從歷史提交記錄checkout出來,但無分支信息,切換到其他分支會自動刪除
$ git checkout [name]                 # 切換分支
$ git checkout --track origin/dev     # 切換到遠程dev分支
$ git checkout -b [name]              # 從當前分支新建並切換到name
$ git checkout -b [new_br] [br]       # 基於branch創建新的new_branch
$ git merge origin/dev                # 將分支dev與當前分支進行合並
$ git merge [branch]                  # 將branch分支合並到當前分支
$ git merge origin/master --no-ff     # 不要Fast-Foward合並,這樣可以生成merge提交
$ git rebase master [branch]          # 將master rebase到branch,相當於: git clone [branch] && git rebase master && git clone master && git merge [branch]

Git遠程分支管理

$ git pull                              # 抓取遠程倉庫所有分支更新並合並到本地
$ git pull --no-ff                      # 抓取遠程倉庫所有分支更新並合並到本地,不要快進合並
$ git fetch origin                      # 抓取遠程倉庫更新
$ git merge origin/master               # 將遠程主分支合並到本地當前分支
$ git clone --track origin/branch       # 跟蹤某個遠程分支創建相應的本地分支
$ git clone -b [l_b] origin/[r_b]       # 基於遠程分支創建本地分支,功能同上
$ git push                              # push所有分支
$ git push origin master                # 將本地指定分支推到遠程主分支
$ git push -u origin master             # 將本地主分支推到遠程(如無遠程主分支則創建,用於初始化遠程倉庫)
$ git clone [[email protected]]               # 克隆遠程倉庫
$ git remote -v                         # 查看遠程服務器地址和倉庫名稱
$ git remote show [name]                # 查看遠程服務器倉庫狀態
$ git remote add [name] [url]           # 添加遠程倉庫地址
$ git remote rm [repository]            # 刪除遠程倉庫
$ git remote set-url --push [name] [newUrl]# 修改遠程倉庫
$ git pull [rName] [lName]              # 拉取遠程分支
$ git push [rName] [lName]              # 推送遠程分支
$ git push origin [lname]:[rname]       # 本地分支push到遠程
$ git push origin -d [name]             # 刪除遠程分支-d也可以用--delete
$ git remote set-head origin master     # 設置遠程倉庫的HEAD指向master分支
$ git branch --set-upstream master origin/master

Git版本回退操作相關命令

HEAD :當前版本
HEAD^ :上一個版本
$ git log                               # 查看commit的信息
$ git log --pretty=oneline              # 單行展示歷史記錄
$ git log --oneline                     # 單行簡單展示
$ git reflog                            # 查看命令歷史記錄 
$ git checkout .                        # 撤銷所有本地改動代碼
$ git checkout [file]                   # 撤銷所有本地改動代碼
$ git reset HEAD .                      # 撤銷所有add文件 
$ git reset HEAD [file]                 # 撤銷單個add文件
$ git reset --soft HEAD                 # 只回退commit的信息,保留修改代碼
$ git reset --hard HEAD^                # 徹底回退到上次commit版本,不保留修改代碼
$ git revert                            # 以前commit的id
$ git reset --hard [branch]             # 本地代碼回退到與git遠程倉庫保持一致
--hard 參數會拋棄當前工作區的修改
--soft 參數的話會回退到之前的版本,但是保留當前工作區的修改,可以重新提交

Git標簽操作相關命令

$ git tag                               # 查看標簽
$ git tag [name]                        # 創建版本
$ git tag -d [name]                     # 刪除版本
$ git tag -r                            # 查看遠程版本
$ git push origin [name]                # 創建遠程版本(本地版本push到遠程)
$ git push origin :refs/tags/[name]     # 刪除遠程版本
$ git pull origin --tags                # 合並遠程倉庫的tag到本地
$ git push origin --tags                # 上傳本地tag到遠程倉庫
$ git tag -a [name] -m [message]        # 創建帶註釋的tag

Git子模塊(submodule)相關操作命令

$ git submodule add [url] [path]        # 添加子模塊
$ git submodule init                    # 初始化子模塊,只在首次檢出倉庫時運行一次就行
$ git submodule update                  # 更新子模塊 每次更新或切換分支後都需要運行一下
刪除子模塊:分4步
1) $ git rm --cached [path]
2) 編輯“.gitmodules”文件,將子模塊的相關配置節點刪除掉
3) 編輯“ .git/config”文件,將子模塊的相關配置節點刪除掉
4) 手動刪除子模塊殘留的目錄

Git補丁管理

git diff ] ../sync.patch                # 生成補丁
git apply ../sync.patch                 # 打補丁
git apply --check ../sync.patch         #測試補丁能否成功

Git忽略一些文件、文件夾不提交

在倉庫根目錄下創建名稱為“.gitignore”的文件,寫入不需要的文件夾名或文件,每個元素占一行即可,如

target
*.class

在工作中總結的一些常見的命令,今後還會繼續補充,如有遺漏歡迎補充。

git 命令大全(完整版)