Git學(xué)習(xí)筆記
其實(shí)用Github Desktop就足以應(yīng)付當(dāng)前的需求了,但好像對(duì)于程序員來(lái)講不夠“專業(yè)”和“優(yōu)雅”。
學(xué)習(xí)資料https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6。寫(xiě)的很好,這里將常用到的命令進(jìn)行記錄,有些太長(zhǎng)的則直接引用。
初次配置信息
帶--global為全局,單獨(dú)配置在該項(xiàng)目目錄下運(yùn)行沒(méi)有--global的命令來(lái)配置
git config --global user.name "Will_Zhu"
git config --global user.email will_zyq@qq.com
檢查配置信息
git config --list 顯示所有配置
git config user.name
git config user.email
獲取幫助
git help <verb>
git <verb> --help
man git-<verb> 在win下無(wú)用
獲取Git倉(cāng)庫(kù)repository
從現(xiàn)有目錄中初始化倉(cāng)庫(kù):先在終端中進(jìn)入目標(biāo)文件夾下git init
克隆現(xiàn)有的倉(cāng)庫(kù)git clone [url]local_repository_name
如果不指定local_repository_name則在當(dāng)前路徑下生成和url中一樣的文件夾,也可克隆本地的倉(cāng)庫(kù),url為目標(biāo)倉(cāng)庫(kù)路徑后加.git。
檢查當(dāng)前狀態(tài)git status
跟蹤新文件、將已跟蹤的文件放到暫存區(qū)git add file

git diff 查看尚未暫存的具體修改內(nèi)容
git diff --staged或git diff --cached 查看已暫存的將要添加到下次提交里的內(nèi)容
指定git編輯器
win: git config --global core.editor"'C:\Program Files (x86)\Microsoft VS Code\code.exe' -w"
mac:

寫(xiě)入環(huán)境變量(不寫(xiě)入則mac重啟后會(huì)之前的設(shè)置會(huì)失效):
https://blog.csdn.net/Edai9508/article/details/6006269
https://code.visualstudio.com/docs/setup/mac
提交更新
git commit 啟動(dòng)默認(rèn)編輯器,輸入本次更新的說(shuō)明
git commit - m message 直接附帶說(shuō)明
git commit -a 自動(dòng)把所有已經(jīng)跟蹤過(guò)的文件暫存起來(lái)一并提交,從而跳過(guò)git add的步驟
撤銷
git reset HEAD fileName 取消暫存的文件,將文件變?yōu)?span lang="X-NONE">changes not staged for commit
git checkout -- fileName 恢復(fù)到上次提交時(shí)的內(nèi)容
git rm file 刪除指定文件,也可單獨(dú)使用rm,反正都要git commit
git clean -f 恢復(fù)到上次commit的樣子

git log 查看提交歷史
git log -p 顯示每次提交的差異,可再加上數(shù)字指定顯示最近的提交,如git log -p -2顯示最近2次的提交內(nèi)容差異
git log --graph 以圖表方式顯示
遠(yuǎn)程倉(cāng)庫(kù)
git remote 查看已經(jīng)配置的遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器
git remote -v 顯示需要讀寫(xiě)遠(yuǎn)程倉(cāng)庫(kù)使用的git保存的簡(jiǎn)寫(xiě)與其對(duì)應(yīng)的URL
gitremote add <shortname> <url> 添加一個(gè)新的遠(yuǎn)程倉(cāng)庫(kù)并指定引用簡(jiǎn)寫(xiě),一般叫origin,可添加多個(gè)遠(yuǎn)程倉(cāng)庫(kù)
git fetch <shortname> 將遠(yuǎn)程倉(cāng)庫(kù)內(nèi)容抓取到本地,但無(wú)法直接看到,一般之后會(huì)用合并功能git merge origin/master 將origin庫(kù)中的branch合并到當(dāng)前branch。
git fetch --all 抓取所有遠(yuǎn)程倉(cāng)庫(kù)。
git push origin master 將本地的推送到遠(yuǎn)程倉(cāng)庫(kù)
git remote show origin 查看遠(yuǎn)程倉(cāng)庫(kù)
git remote rename <oldShortname> <newShortname> 修改添加的遠(yuǎn)程倉(cāng)庫(kù)的簡(jiǎn)寫(xiě)名
git remote rm <shortname> 移除遠(yuǎn)程倉(cāng)庫(kù)
標(biāo)簽
標(biāo)簽分為輕量標(biāo)簽(lightweight)與附注標(biāo)簽(annotated)。
輕量標(biāo)簽只是一個(gè)特定提交的引用。git tag v1.0 -m "my version1.0" 其中-m可有可無(wú)
附注標(biāo)簽是存儲(chǔ)在Git數(shù)據(jù)庫(kù)中的一個(gè)完整對(duì)象。它們是可以被校驗(yàn)的;其中包含打標(biāo)簽者的名字、電子郵箱、日期。并且可以被GNUPrivacy Guard (GPG)簽名與校驗(yàn)。通常建議創(chuàng)建附注標(biāo)簽。git tag -a v1.0 -m 'my version1.1' 其中-m必須有,沒(méi)有會(huì)彈出編輯器讓寫(xiě)。
默認(rèn)情況下,git push 命令不會(huì)傳送標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù)上,上上傳必須手動(dòng)git push origin <tagName>。一次性上傳全部的標(biāo)簽git push origin --tags
git tag 查看已有的標(biāo)簽
git show <tagName> 查看標(biāo)簽信息與對(duì)應(yīng)的提交信息
git tag -d <tagName> 刪除本地標(biāo)簽
git push <remote> :refs/tags/<tagName> 刪除遠(yuǎn)程倉(cāng)庫(kù)
Git別名--略
分支
git branch 查看本地所有分支,參數(shù)--merged查看那些分支已經(jīng)合并到當(dāng)前分支,參數(shù)--no-merged查看那些沒(méi)有合并到當(dāng)前分支的分支,參數(shù)-a查看包括遠(yuǎn)程倉(cāng)庫(kù)的所有分支。
git branch <newBranch> 創(chuàng)建一個(gè)新的分支,參數(shù)-d為刪除分支,若該分支并未合并到其他分支,則需要用-D
git checkout <branch> 切換到該分支,加上-b則為以當(dāng)前分支為藍(lán)本創(chuàng)建一個(gè)新分支并切換。
git log --oneline --decorate 查看各個(gè)分支當(dāng)前所指的對(duì)象
git mergetool 使用圖形化工具來(lái)解決沖突。
遠(yuǎn)程分支
git ls-remote 顯示遠(yuǎn)程引用的完整列表
git checkout --track <remote>/<branch> 創(chuàng)建一個(gè)跟蹤指定遠(yuǎn)程倉(cāng)庫(kù)中的分支的同名分支,并切換到該分支。
git checkout -b <newBranch> <remote>/<branch> 創(chuàng)建一個(gè)分支,跟蹤指定遠(yuǎn)程倉(cāng)庫(kù)中的分支,并切換到新創(chuàng)建到的分支。
git branch -u <remote>/<branch> 設(shè)置/修改已有本地分支跟蹤遠(yuǎn)程倉(cāng)庫(kù)中的分支
git branch -vv 列出所有本地分支并包含更多的信息,如每一個(gè)分支正在跟蹤哪個(gè)遠(yuǎn)程分支與本地分支是否領(lǐng)先、落后或是都有。
git push <remote> --delete <branch> 刪除遠(yuǎn)程倉(cāng)庫(kù)中的分支。
git push <remote> branch -u 將本地的分支上傳到遠(yuǎn)程倉(cāng)庫(kù)中(遠(yuǎn)程倉(cāng)庫(kù)之前沒(méi)有該分支)
關(guān)于變基 https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA

浙公網(wǎng)安備 33010602011771號(hào)