git 日常使用

1.git介紹

Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng)。Linus Benedict Torvalds,芬蘭赫爾辛基人,著名的電腦程序員,Linux內(nèi)核的發(fā)明人及該計(jì)劃的合作者,2005年,git的第一個(gè)版本正式上線。2周完成Git系統(tǒng)開(kāi)發(fā)

Git是分布式的,SVN是集中式的, git 是單機(jī)版的SVN

2.基礎(chǔ)命令

1.查看版本

1.git --version

查看日志

git log online
git log --oneline --graph --color --all --decorate

截屏2023-09-18 15.48.47.png
2.添加賬戶和郵箱

git config --global user.name '你的賬號(hào)昵稱'
git config --global user.email '你的賬號(hào)郵箱'

3.查看git配置信息

git config —list

截屏2023-09-18 15.50.29.png
截屏2023-09-21 13.15.07.png
4.創(chuàng)建本地倉(cāng)庫(kù),關(guān)聯(lián)到遠(yuǎn)程倉(cāng)庫(kù)
a.創(chuàng)建git倉(cāng)庫(kù)

git init

b.添加所有改動(dòng)的文件到暫存期

git add . 點(diǎn)代表 全部

c.提交至本地倉(cāng)庫(kù)

git commit -m "提交的備注信息"

d.本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)想關(guān)聯(lián)

git remote add origin https://xxxxxxxx

4.查看遠(yuǎn)程的源

git remote -v


截屏2023-09-18 16.02.01.png
5.重命名本地分支

git branch -m <oldbranch> <newbranch>


截屏2023-09-18 16.11.06.png
6.拉去遠(yuǎn)程分支

git pull
git pull --rebase origin master

7.推送到代碼到遠(yuǎn)程分支

git push origin master
git push --f origin master 強(qiáng)制提交

截屏2023-09-18 16.21.21.png

8.查看單前的分支

git branch
git branch -r 查看遠(yuǎn)程所有分支
git branch -a 查看本地和遠(yuǎn)程的所有分支

9.創(chuàng)建本地新的分支

git branch dev

10.切換到相應(yīng)的分支

git checkout dev

10.創(chuàng)建分支的同時(shí)切換到該分支

git checkout -b release


截屏2023-09-18 16.37.10.png
11.刪除本地分支

git branch -d 'release'

12.將本地分支推送到遠(yuǎn)程分支

git push origin 'dev'
截屏2023-09-18 16.40.49.png
13.查看文件狀態(tài)

git status


截屏2023-09-20 16.02.39.png
14.暫存代碼

git stash
git stash save ‘stash說(shuō)明信息’


截屏2023-09-18 16.50.38.png

[圖片上傳中...(截屏2023-09-20 16.01.50.png-c512fc-1695196917569-0)]

14.查看當(dāng)前緩存列表。

git stash list


截屏2023-09-18 16.52.50.png
15.將stash的內(nèi)容彈出,默認(rèn)彈出最上面的那條,即stash@{0} 同時(shí)刪除恢復(fù)的緩存條目。

git stash pop [stash]

16.丟棄stash條目,默認(rèn)丟棄最上面的那條,即stash@{0},此外還可以在drop后加stash@{n}來(lái)指定要丟棄的stash條目。

git stash drop [stash]

17.查看stash的具體內(nèi)容

git stash show [stash]
git stash show [stash] -p

18.應(yīng)用某個(gè)存儲(chǔ),但不會(huì)把存儲(chǔ)從存儲(chǔ)列表中刪除,默認(rèn)使用第一個(gè)存儲(chǔ),即stash@{0},

git stash apply stash@{n}

19.清除所有的stash條目。

git stash clear

20.獲取某個(gè)分支上的某個(gè)commit 提交

git cherry-pick
然而git merge會(huì)把一個(gè)分支的commits都應(yīng)用到當(dāng)前分支,這時(shí)候我們可以使用git cherry-pick來(lái)完成這一操作,它的作用是選擇已存在的commit應(yīng)用到當(dāng)前分支上,并產(chǎn)生新的commit SHA-1 校驗(yàn)和。

多個(gè)commits

git cherry-pick commit1 commit2

連續(xù)多個(gè)commits
git cherry-pick commit1..commit8 (不包含commit1 2-8)(2,8]

連續(xù)多個(gè)commits
git cherry-pick commit1^..commit8 (包含commit1 1-8)[1,8]

發(fā)生沖突后 解決沖突再執(zhí)行

git add .
git cherry-pick --continue
完成 cherry-pick操作

放棄這次cherry-pick

git cherry-pick --abort

21.git版本回退

git reset --soft commit號(hào)/HEAD
將本地倉(cāng)回滾到Y(jié)版本,但是暫存區(qū)和工作區(qū)保持不變。此時(shí)本地倉(cāng)回滾到Y(jié)版本號(hào)commit完成的那一刻。


截屏2023-09-19 14.04.51.png

截屏2023-09-19 13.43.23.png

git reset --hard commit號(hào)/HEAD
本地倉(cāng)、暫存區(qū)、工作區(qū),三區(qū)都回滾


截屏2023-09-19 14.07.02.png
截屏2023-09-19 13.47.48.png

git reset --mixed commit號(hào)/HEAD 或者 git reset
本地倉(cāng)和暫存區(qū),都回滾到Y(jié)版本號(hào)。工作區(qū)代碼不受影響

截屏2023-09-19 14.08.10.png

截屏2023-09-19 13.36.55.png

HEAD
HEAD 說(shuō)明:
HEAD 表示當(dāng)前版本
HEAD^ 上一個(gè)版本
HEAD^^ 上上一個(gè)版本
HEAD^^^ 上上上一個(gè)版本

可以使用 ~數(shù)字表示
HEAD~0 表示當(dāng)前版本
HEAD~1 上一個(gè)版本
HEAD^2 上上一個(gè)版本
HEAD^3 上上上一個(gè)版本

使用git reflog命令可以幫助恢復(fù)git誤操作,進(jìn)行數(shù)據(jù)恢復(fù)

git reflog

截屏2023-09-20 16.07.02.png

22.git rebase 和 git merge
1.merge 和 rebase 的區(qū)別:

1.使用merge命令合并分支,解決完沖突,這個(gè)時(shí)候會(huì)產(chǎn)生一個(gè)commit。rebase不會(huì)產(chǎn)生這個(gè)commit

  1. 使用rebase命令合并分支,解決完沖突,執(zhí)行g(shù)it add.和git rebase--continue,不會(huì)產(chǎn)生額外的commit。
    這樣的好處是,‘干凈’,分支上不會(huì)有無(wú)意義的解決分支的commit;

壞處,如果合并的分支中存在多個(gè)commit,需要重復(fù)處理多次沖突。

3.merge 的提交樹(shù)是非線性的,rebase 的提交樹(shù)是線性的(通過(guò)重寫(xiě)提交歷史)

如果你想要一個(gè)干凈的,沒(méi)有merge commit的線性歷史樹(shù),那么你應(yīng)該選擇git rebase
如果你想保留完整的歷史記錄,并且想要避免重寫(xiě)commit history的風(fēng)險(xiǎn),你應(yīng)該選擇使用git merge

截屏2023-09-20 11.05.54.png

截屏2023-09-20 11.12.02.png
截屏2023-09-21 16.36.15.png
  1. git rebase -i HEAD~3 “HEAD~3” 表示從當(dāng)前最新的版本號(hào)開(kāi)始,往前的三個(gè)版本
截屏2023-09-20 18.14.21.png
截屏2023-09-20 16.09.25.png
git tag 標(biāo)簽

git tag -a v1.4 -m "my version 1.4"

git tag -a v1.2 9fceb02 后期在某一個(gè)commit打標(biāo)簽

git tag 查看標(biāo)簽

git push origin v1.5 推送一個(gè)tag到遠(yuǎn)程

git push origin --tags 如果想要一次性推送很多標(biāo)簽,也可以使用帶有 --tags 選項(xiàng)

git tag -d <tagname> 要?jiǎng)h除掉你本地倉(cāng)庫(kù)上的標(biāo)簽(注意上述命令并不會(huì)從任何遠(yuǎn)程倉(cāng)庫(kù)中移除這個(gè)標(biāo)簽,用 git push <remote> )

git push origin --delete <tagname> 直接刪除遠(yuǎn)程標(biāo)簽

git push origin :refs/tags/v1.4

.gitignore 文件

/mtk/ 過(guò)濾整個(gè)文件夾
*.zip 過(guò)濾所有.zip文件
/mtk/do.c 過(guò)濾某個(gè)具體文件

!src/ 不過(guò)濾該文件夾
!*.zip 不過(guò)濾所有.zip文件
!/mtk/do.c 不過(guò)濾該文件

星號(hào) * 代表零個(gè)或多個(gè)任意字符。例如, *.txt 會(huì)匹配所有的 .txt 文件。
問(wèn)號(hào) ? 代表一個(gè)任意字符。例如, ?.txt 會(huì)匹配 a.txt 但不會(huì)匹配 ab.txt。
兩個(gè)星號(hào) ** 表示任意中間目錄。例如, **/foo 會(huì)匹配 foo,a/foo,a/b/foo 等
前綴 ! 表示不忽略。例如, *.txt 和 !important.txt 會(huì)忽略所有的 .txt 文件,但不會(huì)忽略 important.txt。
前綴 / 表示只忽略當(dāng)前目錄下的文件。例如, /test 會(huì)忽略當(dāng)前目錄下的 test 文件,但不會(huì)忽略 a/test
后綴 / 表示只忽略目錄。例如, test/ 會(huì)忽略 test 目錄,但不會(huì)忽略 test 文件

注意

最后需要強(qiáng)調(diào)的一點(diǎn)是,如果你不慎在創(chuàng)建.gitignore文件之前就push了項(xiàng)目,那么即使你在.gitignore文件中寫(xiě)入新的過(guò)濾規(guī)則,這些規(guī)則也不會(huì)起作用,Git仍然會(huì)對(duì)所有文件進(jìn)行版本管理。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push origin master

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前14條在工作中會(huì)經(jīng)常用到 1.如何將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地 注意如果此時(shí)你的項(xiàng)目是空的,要先建個(gè)頁(yè)面push到遠(yuǎn)程倉(cāng)...
    _花閱讀 377評(píng)論 0 1
  • 創(chuàng)建代碼庫(kù) cd到某個(gè)目錄,然后創(chuàng)建一個(gè)Git本地代碼庫(kù) $ git init cd到某個(gè)目錄,將其初始化為帶名字...
    cyhai閱讀 565評(píng)論 0 0
  • 開(kāi)篇 如今,Git 大行其道,頗有一統(tǒng)天下之勢(shì)。 如果你的技能樹(shù)上 Git 和 Github 的圖標(biāo)還沒(méi)有點(diǎn)亮的話...
    sufun_wu閱讀 261評(píng)論 0 0
  • git 日常使用 ==查看隱藏文件 -ah== 初始化本地倉(cāng)庫(kù) 添加文件到git 提交 查看當(dāng)前倉(cāng)庫(kù)的狀態(tài) 查看修...
    sunjiandev閱讀 239評(píng)論 0 1
  • Git概念介紹 Git描述 Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),分布式的含義是(它不需要服務(wù)器端軟件的支持)。另...
    暖小憂閱讀 286評(píng)論 0 0

友情鏈接更多精彩內(nèi)容