日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Git之常用命令的综合使用和示例分析

發(fā)布時(shí)間:2024/5/28 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git之常用命令的综合使用和示例分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、前言

  • 一般來(lái)說(shuō),Git 日常使用只要記住如下 6 個(gè)命令就可以,但是熟練使用,卻需要記住 60~100 個(gè)命令:

  • 上面的命令說(shuō)明如下:
編號(hào)專用名詞對(duì)應(yīng)解釋相關(guān)命令
1Workspace工作區(qū)add
2Index/Stage暫存區(qū)commit
3Repository本地倉(cāng)庫(kù)push、checkout
4Remote遠(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)看到:
# 查看分支列表,其中*為當(dāng)前分支 git branch# 創(chuàng)建分支 git branch <name># 切換分支 git checkout <name># 創(chuàng)建并切換分支 git checkout -b <name># 合并某分支到當(dāng)前分支 git merge <name># 刪除分支 git branch -d <name># 強(qiáng)行刪除分支 git branch -D <name> # Git查看分支 $ git branch # 列出所有本地分支 $ git branch -r # 列出所有遠(yuǎn)程分支 $ git branch -a # 列出所有本地分支和遠(yuǎn)程分支# Git分支切換 $ git branch [branch-name] # 新建一個(gè)分支但停留在當(dāng)前分支 $ git checkout -b [branch] # 新建一個(gè)分支并切換到該分支 $ git checkout [branch-name] # 切換到指定分支并更新工作區(qū) $ git checkout - # 切換到上一個(gè)分支 $ git branch -d [branch-name] # 刪除分支# Git分支刪除 $ git push origin --delete [branch-name] # 刪除遠(yuǎn)程分支 $ git branch -dr [remote/branch] # 刪除遠(yuǎn)程分支# 建立追蹤關(guān)系,在現(xiàn)有分支與指定的遠(yuǎn)程分支之間 $ git branch --set-upstream [branch] [remote-branch]

五、Git 沖突處理

  • 合并時(shí)顯示分支沖突先 merge 后修改 <<<<分支1、<<<分支2 之間的沖突內(nèi)容,然后再提交,當(dāng)前分支會(huì)比被合并的分支,多一次 commit 的提交記錄:
# 合并指定分支到當(dāng)前分支 # 禁用Fast forward功能,不刪除分支且合并后保留分支 git merge --no-ff [branch]# 選擇一個(gè)commit并合并進(jìn)當(dāng)前分支 $ git cherry-pick [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ū):
# 儲(chǔ)藏當(dāng)前工作區(qū) git stash# 查看儲(chǔ)藏區(qū) git stash list# 恢復(fù)指定內(nèi)容到工作區(qū),不在stash內(nèi)刪除 # 其中的stashid可以通過(guò)git stash list查詢 git stash apply <stashid># 刪除儲(chǔ)藏區(qū) git stash drop <stashid># 恢復(fù)stash的內(nèi)容到工作區(qū),并在stash內(nèi)刪除 git stash pop

八、Git 標(biāo)簽管理

  • 標(biāo)簽基本都是發(fā)布版本的時(shí)候使用的,所以平常很少使用,了解即可:
# 新建標(biāo)簽,默認(rèn)為在HEAD上,也可以指定一個(gè)commit id號(hào) git tag <name># 指定標(biāo)簽信息 git tag -a <tagname> -m "blablablabla"# 使用PGP簽名標(biāo)簽 git tag -s <tagname> -m "blablablabla"# 查看所有標(biāo)簽 git tag# 查看指定tag的詳細(xì)內(nèi)容 git show <tagname># 刪除tag標(biāo)簽 git tag -d <tagname># 推送指定標(biāo)簽到遠(yuǎn)程 git push origin <tagname># 推送所有標(biāo)簽到遠(yuǎn)程 git push origin --tags# 從遠(yuǎn)程刪除標(biāo)簽 git push origin :refs/tags/<tagname>

九、Git 配置管理

  • 主要配置日常使用工具和提交記錄相關(guān)的配置,需要注意的是,區(qū)分全局和本地配置:
# 列出配置項(xiàng) $ git config --list $ git config --global --list# 獲取配置項(xiàng) $ git config user.name "escape" $ git config --global user.name "escape" $ git config user.email "escapelife@gmail.com" $ git config --global user.email "escapelife@gmail.com"# 添加配置項(xiàng) $ git config -–add site.name yiibai $ git config --global -–add site.name yiibai# 刪除配置項(xiàng) $ git config -–unset site.name $ git config --global -–unset site.name# 獲取幫助 $ git help <verb> $ git help config # 配置全局默認(rèn)編輯器 $ git config --global core.editor vim $ git config --global core.editor emacs# 配置比較工具 $ git config --global merge.tool vimdiff# 全局代理配置 $ git config --global https.proxy http://127.0.0.1:1080 $ git config --global https.proxy https://127.0.0.1:1080# 全局取消代理配置 $ git config --global --unset http.proxy $ git config --global --unset https.proxy

十、Git 其他操作

# 生成發(fā)布?jí)嚎s包 $ git archive

十一、快捷鍵總結(jié)

總結(jié)

以上是生活随笔為你收集整理的Git之常用命令的综合使用和示例分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。