Git之常用命令的综合使用和示例分析
生活随笔
收集整理的這篇文章主要介紹了
Git之常用命令的综合使用和示例分析
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、前言
- 一般來(lái)說(shuō),Git 日常使用只要記住如下 6 個(gè)命令就可以,但是熟練使用,卻需要記住 60~100 個(gè)命令:
- 上面的命令說(shuō)明如下:
| 1 | Workspace | 工作區(qū) | add |
| 2 | Index/Stage | 暫存區(qū) | commit |
| 3 | Repository | 本地倉(cāng)庫(kù) | push、checkout |
| 4 | Remote | 遠(yuǎn)程倉(cāng)庫(kù) | fetch、clone、pull |
二、Git 增刪改查
$ cd learngit $ git init # 初始化Git倉(cāng)庫(kù) ** create readme.txt ** echo "line 1 ">> readme.txt$ git add readme.txt # 添加到暫存空間 $ git commit -m "first commit" # 提交加備注信息 ** echo "error line 2" >> readme.txt$ git add readme.txt $ git status # 查看狀態(tài) ** have a change.$ git reset HEAD readme.txt # 將暫存空間內(nèi)容撤銷 $ git checkout readme.txt # 撤銷工作空間內(nèi)容 ** echo "line2" >> readme.txt $ git add readme.txt $ git commit -m "commit line 2 "$ git reset --hard HEAD^ # 回退為上個(gè)版本(刪除修改) $ git reset --hard (gitID) # 回退為指定版本(刪除修改) $ git reset --soft (gitID) # 回退為指定版本(不刪除回退文件的修改) $ git log # 查看當(dāng)前版本及之前版本的id號(hào) # Git倉(cāng)庫(kù)創(chuàng)建 $ git init # 將當(dāng)前目錄設(shè)為Git代碼庫(kù) $ git init [project-name] # 新建并將其設(shè)為Git代碼庫(kù) $ git clone [url] # 通過(guò)連接下載一個(gè)已有項(xiàng)目# Git增加文件 $ git add [file1] [file2] # 添加指定文件到暫存區(qū) $ git add [dir] # 添加指定目錄到暫存區(qū) $ git add . # 添加當(dāng)前所有文件到暫存區(qū) $ git add -p # 添加每個(gè)變化前都要求確認(rèn)# Git刪除文件 $ git rm [file1] [file2] # 刪除工作區(qū)文件并且將這次刪除放入暫存區(qū) $ git rm --cached [file] # 停止追蹤指定文件但該文件會(huì)保留在工作區(qū) $ git mv [file-original] [file-renamed]# Git代碼提交 $ git commit -m [message] # 提交暫存區(qū)到倉(cāng)庫(kù)區(qū) $ git commit -a # 提交工作區(qū)自上次commit之后的變化直接到倉(cāng)庫(kù)區(qū) $ git commit -v # 提交時(shí)顯示所有diff信息 $ git commit --amend -m [message] # 使用一次新的commit替代上一次提交 $ git commit --amend [file1] [file2] # 重做上一次commit并包括指定文件的新變化# Git撤銷操作 $ git checkout . # 恢復(fù)暫存區(qū)的所有文件到工作區(qū) $ git checkout [file] # 恢復(fù)暫存區(qū)的指定文件到工作區(qū) $ git checkout [commit] [file] # 恢復(fù)某個(gè)commit的指定文件到暫存區(qū)和工作區(qū)# Git重置操作 $ git reset [file] # 重置暫存區(qū)的指定文件;與上一次commit保持一致但工作區(qū)不變 $ git reset --hard # 重置暫存區(qū)與工作區(qū)文件;與上一次commit保持一致;謹(jǐn)慎使用 $ git reset [commit] # 重置當(dāng)前分支的指針為指定commit;同時(shí)重置暫存區(qū)但工作區(qū)不變 $ git reset --hard [commit] # 重置當(dāng)前分支的HEAD為指定commit,同時(shí)重置暫存區(qū)和工作區(qū) $ git reset --keep [commit] # 重置當(dāng)前HEAD為指定commit,但保持暫存區(qū)和工作區(qū)不變# 新建一個(gè)commit,用來(lái)撤銷指定commit # 后者的所有變化都將被前者抵消并且應(yīng)用到當(dāng)前分支 $ git revert [commit]三、Git 遠(yuǎn)程倉(cāng)庫(kù)
# 注冊(cè)github.com并創(chuàng)建本機(jī)的ssh-key $ ssh-keygen -t rsa -C "123456789@qq.com"# 添加ssh-key到秘鑰管理里面并關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù) $ git remote add origin git@github.com:xxx/learngit.git# 如果遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)存在內(nèi)容需要先pull下面,之后再提交 $ git pull origin master# 將本地庫(kù)push到遠(yuǎn)程倉(cāng)庫(kù),第一次需要加u關(guān)聯(lián),之后可以不加 $ git push -u origin master# 倉(cāng)庫(kù)克隆 $ git clone git@github.com:xxx/gitkills.git # Git遠(yuǎn)程分支推送 $ git fetch [remote] # 下載遠(yuǎn)程倉(cāng)庫(kù)的所有變動(dòng) $ git pull [remote] [branch] # 取回遠(yuǎn)程倉(cāng)庫(kù)的變化,并與本地分支合并 $ git push [remote] [branch] # 上傳本地指定分支到遠(yuǎn)程倉(cāng)庫(kù) $ git push [remote] --force # 強(qiáng)行推送當(dāng)前分支到遠(yuǎn)程倉(cāng)庫(kù),即使有沖突 $ git push [remote] --all # 推送所有分支到遠(yuǎn)程倉(cāng)庫(kù)# Git遠(yuǎn)程同分支查看 $ git remote -v # 顯示所有遠(yuǎn)程倉(cāng)庫(kù) $ git remote show [remote] # 顯示某個(gè)遠(yuǎn)程倉(cāng)庫(kù)的信息 $ git remote add [shortname] [url] # 增加一個(gè)新的遠(yuǎn)程倉(cāng)庫(kù)并命名四、Git 分支管理
- 在工作區(qū)未提交的內(nèi)容,所有分支都可以看到,提交之后的內(nèi)容在對(duì)應(yīng)的分支內(nèi),切換只能在對(duì)應(yīng)的分支內(nèi)看到:
五、Git 沖突處理
- 合并時(shí)顯示分支沖突先 merge 后修改 <<<<分支1、<<<分支2 之間的沖突內(nèi)容,然后再提交,當(dāng)前分支會(huì)比被合并的分支,多一次 commit 的提交記錄:
六、Git 比對(duì)日志
# 查看分支情況 git log --graph --pretty=oneline --abbrev-commit git log --graph --decorate --pretty=oneline --abbrev-commit --all git log --pretty=fsormat:'%s %C(bold blue)(%an)%Creset' --abbrev-commit git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit # Git日志格式$ git log # 顯示當(dāng)前分支的版本歷史 $ git log --stat # 顯示commit歷史及每次commit變更的文件 $ git log -5 --pretty --oneline # 顯示過(guò)去5次提交 $ git reflog # 顯示當(dāng)前分支的最近幾次提交 $ git shortlog -sn # 顯示所有提交過(guò)的用戶,按提交次數(shù)排序# 顯示某個(gè)commit之后的所有變動(dòng),每個(gè)commit占據(jù)一行 $ git log [tag] HEAD --pretty=format:%s# 顯示某個(gè)commit之后的所有變動(dòng),其"提交說(shuō)明"必須符合搜索條件 $ git log [tag] HEAD --grep feature# 顯示某個(gè)文件的版本歷史,包括文件改名 $ git log --follow [file] $ git whatchanged [file]# Git高級(jí)查詢 $ git blame [file] # 顯示指定文件是什么人在什么時(shí)間修改過(guò) $ git log -p [file] # 顯示指定文件相關(guān)的每一次diff $ git log -S [keyword] # 根據(jù)關(guān)鍵詞搜索提交歷史 $ git diff --shortstat "@{0 day ago}" # 顯示今天你寫了多少行代碼# Git 差異對(duì)比 $ git diff # 顯示暫存區(qū)和工作區(qū)的差異 $ git diff --cached [file] # 顯示暫存區(qū)和上一個(gè)commit的差異 $ git diff HEAD # 顯示工作區(qū)與當(dāng)前分支最新commit之間的差異 $ git diff [first-branch]...[second-branch] # 顯示兩次提交之間的差異# Git顯示內(nèi)容 $ git show [commit] # 顯示某次提交的元數(shù)據(jù)和內(nèi)容變化 $ git show --name-only [commit] # 顯示某次提交發(fā)生變化的文件 $ git show [commit]:[filename] # 顯示某次提交時(shí)某個(gè)文件的內(nèi)容七、Git 內(nèi)容存儲(chǔ)
- 正在 dev 分支工作時(shí),需要修改 bug 并提交,應(yīng)該先把 dev 當(dāng)前工作區(qū) stash 儲(chǔ)藏起來(lái),修改完 bug 提交后在使用 git stash pop 恢復(fù) dev 的內(nèi)容到工作區(qū):
八、Git 標(biāo)簽管理
- 標(biāo)簽基本都是發(fā)布版本的時(shí)候使用的,所以平常很少使用,了解即可:
九、Git 配置管理
- 主要配置日常使用工具和提交記錄相關(guān)的配置,需要注意的是,區(qū)分全局和本地配置:
十、Git 其他操作
# 生成發(fā)布?jí)嚎s包 $ git archive十一、快捷鍵總結(jié)
總結(jié)
以上是生活随笔為你收集整理的Git之常用命令的综合使用和示例分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Git之签署工具GPG的安装和使用
- 下一篇: Git之常用的高效处理技巧