柚子快報(bào)激活碼778899分享:Git 命令記錄
本文是關(guān)于學(xué)習(xí)廖雪峰的Git教程的筆記,及平時(shí)使用的記錄
一、配置全局參數(shù)
#設(shè)置當(dāng)前用戶的git全局用戶名
git config --global usr.name "name"
#設(shè)置郵箱
git config --global usr.email "email@abc.com"
#設(shè)置默認(rèn)編輯器
git config --global core.editor vim
二、創(chuàng)建版本庫
git init
三、查詢工作區(qū)狀態(tài)
git status
#查看被被git忽略的文件
git status --ignored
四、從工作區(qū)提交到暫存區(qū)(staged)
git add ${filename}
五、從暫存去提交到版本庫
#參數(shù) "-m" 指定本次提交的說明
git commit -m "your commit message"
# 修改commit log
git commit --amend
六、查看log
git log
#簡(jiǎn)要信息,加參數(shù) "--pertty=oneline"
git log --pretty=oneline
#查看分支合并圖
git log --graph
#只顯示SHA-1的前幾位
git log --abbrev-commit
# 顯示提交文件名
git log --name-only -1
七、查看操作記錄
git reflog
八、版本回退/撤銷修改
#從倉庫中回退版本 參數(shù) "HEAD^"后面緊跟數(shù)字代表回退到最近的第幾次版本
#回退到上一次版本
git reset --hard HEAD^
# 撤銷commit 不撤銷add
git reset --soft HEAD^
#回退到指定SHA-1的值對(duì)應(yīng)的版本,參數(shù)da5bc75,填實(shí)際的SHA-1值
git reset --hard da5bc75
#撤銷提交到暫存區(qū)的修改
git reset HEAD
#撤銷工作區(qū)的修改
#撤銷readme.txt文件的修改
git checkout -- readme.txt
#1、如果readme.txt沒有被存放到暫存區(qū),執(zhí)行命令后工作區(qū)的readme.txt文件就恢復(fù)到和倉庫的一樣
#2、如果readme.txt文件已經(jīng)添加到暫存區(qū),撤銷將恢復(fù)到添加到暫存區(qū)后的狀態(tài)
#撤銷默認(rèn)文件
#獲取文件提交日志對(duì)應(yīng)的Hash Id
git log $filename
#回退文件版本
git checkout $Hash $filename
九、對(duì)比差異
#對(duì)比工作區(qū)和暫存區(qū)的差異
git diff
#對(duì)比暫存區(qū)和倉庫的差異
git diff --cached
#對(duì)比工作區(qū)和倉庫的差異
git diff HEAD
#可以加參數(shù) "-- ${文件名}" 指定比較的文件
#例如對(duì)吧工作區(qū)readme.txt文件和倉庫中的readme.txt文件的差異
git diif HEAD -- readme.txt
#對(duì)比兩個(gè)分支的差異文件
git diff branch1 branch2 --stat
#顯示兩個(gè)分支指定文件詳細(xì)差異
git diff branch1 branch2 file/path
十、刪除文件
#刪除工作區(qū)文件,并且將版本庫中的該版本大的文件也刪除
git rm
git commit -m "remove file"
#刪除后的文件可以通過checkout 或者reset 獲取最后記錄的文件
十一、創(chuàng)建SSH Key
SSH key用于網(wǎng)絡(luò)傳輸?shù)腟SH加密
ssh-keygen -t rsa -C "email@abc.com"
執(zhí)行完之后,按照默認(rèn)的配置回車就會(huì)在用戶的home目錄下生成.ssh文件夾,文件夾中會(huì)有id_rsa和id_rsa.pub文件,id_rsa是私鑰,id_rsa.pub是公鑰。 ??因?yàn)镚itHub需要識(shí)別出你推送的提交確實(shí)是你推送的,而不是別人冒充的,而Git支持SSH協(xié)議,所以,GitHub只要知道了你的公鑰,就可以確認(rèn)只有你自己才能推送。
十二、關(guān)聯(lián)遠(yuǎn)程倉庫
git remote add origin https://github.com/XXX/myfirstgit.git
#origin 是遠(yuǎn)程庫的名稱,git的默認(rèn)叫法
十三、推送本地庫到遠(yuǎn)程
#推送本地分支到遠(yuǎn)程倉庫
git push origin
#例:推送本地的master分支
git push origin master
#如果遠(yuǎn)程庫為空的,則加 "-u" 選項(xiàng),可以然本地庫和遠(yuǎn)程庫關(guān)聯(lián)
git push -u origine master
十四、下拉遠(yuǎn)程庫的版本
git pull
#第一次下拉遠(yuǎn)程倉庫代碼時(shí)指定遠(yuǎn)程分支和本地分支的關(guān)聯(lián)
git pull origin master
十五、克隆遠(yuǎn)程庫
git clone
十六、分支操作
1、查看分支
git branch
2、創(chuàng)建分支
git branch
3、切換分支
#方法一
git checkout
#方法二 git version 2.23以上才支持
git switch
4、創(chuàng)建+切換分支
#方法一
git checkout -b
#方法二 version 2.23以上才支持
git switch -c
5、合并某個(gè)分支到當(dāng)前分支
git merge
#合并時(shí)加參數(shù) "--no-ff" 用普通模式合并,合并后的歷史有分支,能看出來曾經(jīng)做過合并,而默認(rèn)使用的fast forward合并就看不出來曾經(jīng)做過合并。
#合并時(shí)可以添加提交記錄內(nèi)容,使用參數(shù) "-m <描述提交內(nèi)容>"
拷貝A分支的文件file1到分支B
#1、切換到分支B
git checkout B
#2、拷貝A分支的file1到分支B
git checkout --path A file1
6、刪除分支
git branch -d
#強(qiáng)制刪除已修改,但未被合并的分支
git branch -D
7、在本地創(chuàng)建與遠(yuǎn)程分支對(duì)應(yīng)的分支
#本地分支名稱最好和遠(yuǎn)程分支名稱一致
git checkout -b
8、建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián)
git branch --set-upstream-to=origin/
9、分支重命名
git branch -m old-name new-name
10、創(chuàng)建一個(gè)一樣的分支
git checkout -b new-branch old-branch
十七、現(xiàn)場(chǎng)保存和恢復(fù)
當(dāng)前的分支還有未完成的任務(wù),需要優(yōu)先去處理別的事務(wù),則需要先將當(dāng)前的分支修改保存,再切換到別的分支。
#保存現(xiàn)場(chǎng)
git stash
#查看保存現(xiàn)場(chǎng)
git stash list
#現(xiàn)場(chǎng)恢復(fù)
#方法一,使用apply恢復(fù),但不刪除保存的現(xiàn)場(chǎng);drop刪除現(xiàn)場(chǎng)
git stash apply
git stash drop
#方法二,pop 恢復(fù)的同時(shí)把從stash中恢復(fù)的現(xiàn)場(chǎng)刪除
git stash pop
#分支中存在多個(gè)stash時(shí),使用參數(shù) "stash@{0}" 在大括號(hào)中指定要恢復(fù)的stash
#清空所有現(xiàn)場(chǎng)
git stash clear
十八、合并別的分支已提交的修改內(nèi)容
在master分支上修復(fù)了bug后,我們要想一想,dev分支是早期從master分支分出來的,如果希望在dev上也修改提交的bug,可以使用cherry-pick命令復(fù)制提交的修改到當(dāng)前分支
git cherry-pick ${sha-1}
十九、查看遠(yuǎn)程庫的信息
git remote -v
二十、分叉整理
rebase操作可以把本地未push的分叉提交歷史整理成直線; rebase的目的是使得我們?cè)诓榭礆v史提交的變化時(shí)更容易,因?yàn)榉植娴奶峤恍枰綄?duì)比。 git rebase
二十一、標(biāo)簽
1、新建標(biāo)簽
#新建一個(gè)標(biāo)簽,默認(rèn)指向HEAD
git tag
#指定標(biāo)簽名字和說明信息
git tag -a
2、查看標(biāo)簽
#查看標(biāo)簽
git tag
#查看標(biāo)簽信息
git show [tag name]
3、刪除標(biāo)簽
git tag -d
4、推送標(biāo)簽到遠(yuǎn)程倉庫
#推送一個(gè)標(biāo)簽
git push origin
#推送全部標(biāo)簽
git push origin --tags
5、刪除遠(yuǎn)程標(biāo)簽
git push origin :refs/tags/
二十二、忽略特殊文件
在工作區(qū)的根目錄下添加 ".gitignore" 文件
將 ".gitignore" 添加到git
二十三、添加命令別名
git config --global alias.
二十四、刪除untracked files
查看可能會(huì)被刪除的內(nèi)容
git clean -n
刪除untracked files 文件及目錄
git clean -fd
二十五、顯示提交內(nèi)容
git show [commit id]
查看某次commit中具體某個(gè)文件的修改
git show [commit id] [filename]
二十六、補(bǔ)丁創(chuàng)建及打補(bǔ)丁
git format-patch <基準(zhǔn)版本的commit id>
git am *.patch
二十七、修改遠(yuǎn)程倉庫地址
三種方法: 1.修改命令
git remote origin set-url [url]
2.先刪后加
git remote rm origin
git remote add origin [url]
3.直接修改config文件 參考鏈接: git修改遠(yuǎn)程倉庫地址
二十八、查看遠(yuǎn)程倉庫名稱及路徑
git remote -v
二十九、查看你另外一個(gè)分支的內(nèi)容
git show branch_name:file
三十、拉取另外一個(gè)分支代碼
git checkout other_branch -- file
如果本分支有此文件,則會(huì)覆蓋。
三十一、拉取遠(yuǎn)程所有分支
# 查看遠(yuǎn)程所有分支名稱
git branch -r
#同步所有遠(yuǎn)程分支
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
# 將本地所有分支與遠(yuǎn)程保持同步
git fetch --all
#拉取所有分支代碼
git pull --all
Git拉取遠(yuǎn)程所有分支
三十二、列出被管控的文件
git ls-files
三十三、中文顯示亂碼
export LESSCHARSET=utf-8
三十四、合并其它分支的commit
git cherry-pick 21c5bacf111f3bf1ac0e833f2ba6f9b1d10fc946
三十五、打補(bǔ)丁
打入 patch / diff
git apply xxx.patch
git apply xxx.diff
檢查 patch / diff:
git apply --check xxx.patch
git apply --check xxx.diff
若git和需要打patch的文件不在一個(gè)目錄:
如: (patch在framework下,patch要打入frameworks/base/下)
git apply --check --directory=base/ xxx.patch
git apply --directory=base/ xxx.patch
參考:Git補(bǔ)丁簡(jiǎn)單用法介紹(https://code84.com/319286.html)
例如,需要給 sdk打一個(gè)kernel patch,patch的相對(duì)路徑是kernel,打補(bǔ)丁的方法如下
git apply --directory=kernel/ 0001-Mali-bifrost-Avoid-the-exception-of-getting-an-inval.patch
將補(bǔ)丁文件中的commit也一并合并
git apply --check XXX.patch
git am XXX.patch
三十六、gitignore不生效
gitignore中定義的文件還是被追蹤,是因?yàn)?gitignore只能忽略那些原來沒有被追蹤的文件,如果文件依舊被git管控,則修改.gitignore無效,需要將本地緩存刪除所有文件修改為未被追蹤的狀態(tài),再次提交。
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
三十七、git 生成commit補(bǔ)丁
git format-patch -1 commit_id
例如
$ git format-patch -1 ad3edd0742714d9ac368fa902f67620db27f2f48
0001-Bluetooth-A2DP-sink.patch
三十八、git刪除submodule
在git項(xiàng)目中再clone一個(gè)git工程,提交的時(shí)候子工程不會(huì)被提交,提示: fatal: 路徑規(guī)格 ‘vendor/nxp/nfc/README.md’ 在子模組 ‘vendor/nxp/nfc’ 中 需先刪除submodule
git rm --cached vendor/nxp/nfc
git add vendor/nxp/nfc
git commit -m "add nxp nfc"
柚子快報(bào)激活碼778899分享:Git 命令記錄
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。