【Git】Git-常用命令备忘录(三)
git作為一個(gè)vcs(version control system),是越用越香,那么還有哪些比較香的地方呢!?
1.遠(yuǎn)程倉庫中拉取指定分支
一定遇到這種情況,github看到一個(gè)心儀的開源倉庫,但是分支太多,我們只想要我們需要的分支。
git?clone?-b?<指定分支名>?<遠(yuǎn)程倉庫地址>2.遞歸克隆
項(xiàng)目里包含的一些庫或者一些模塊是存在了別的倉庫,可以用遞歸來克隆回來。一次性就能解決所有的依賴模塊
git?clone?--recursive?https://github.com/dotnet/aspnetcore.git3.切換到指定分支
分支眾多,要切換到指定分支
#branch分支管理 git?branch git?switch?分支名4.創(chuàng)建標(biāo)簽
git?tag?v1.0 #默認(rèn)標(biāo)簽是打在最新提交的commit上5.為指定的commit id創(chuàng)建標(biāo)簽
上面標(biāo)簽,是為最新的一次提交創(chuàng)建的。但是我們想吃后悔藥——為之前的提交創(chuàng)建標(biāo)簽,該怎么做呢!?
$?git?log?--pretty=oneline?--abbrev-commit $?git?tag?標(biāo)簽值?commitId#查看標(biāo)簽信息 $?git?show?標(biāo)簽值6.刪除標(biāo)簽
$?git?tag?-d?v0.1#刪除遠(yuǎn)程標(biāo)簽 $?git?tag?-d?v0.9 $?git?push?origin?:refs/tags/v0.97.推送標(biāo)簽至遠(yuǎn)程倉庫
#推送指定標(biāo)簽至遠(yuǎn)程 $?git?push?origin?v0.1#推送全部標(biāo)簽至遠(yuǎn)程 $?git?push?origin?--tags8.切換至標(biāo)簽
#tag標(biāo)簽管理 git?tag #切換 git?checkout?tag值9.本地沒有遠(yuǎn)程標(biāo)簽
#查看本地標(biāo)簽 git?tag?-l#查看遠(yuǎn)程標(biāo)簽 git?ls-remote?-t#刪除本地標(biāo)簽 git?tag?-d?待刪除的標(biāo)簽值#拉取遠(yuǎn)程的標(biāo)簽 git?fetch?origin?--prune-tags#再次查看本地標(biāo)簽 git?tag10.gitignore文件重新生效
從gitee 創(chuàng)建倉庫,可選擇創(chuàng)建不同項(xiàng)目下.gitignore文件模板。但是我們修改.gitignore文件,并不生效。.gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無效的,把要忽略的文件改為未track狀態(tài)
git?rm?-r?--cached?.??#清除緩存???取消跟蹤所有文件,但不刪除本地文件 git?add?.?#重新trace?file?? git?commit?-m?"update?.gitignore"?#提交和注釋?? git?push?origin?master?#可選,如果需要同步到remote上的話??11.本地關(guān)聯(lián)遠(yuǎn)程
一般情況,常規(guī)操作是先在github或者gitee創(chuàng)建遠(yuǎn)程倉庫,然后
git?clone? git?add?-A git?commit?-m?"" git?push?-u?origin?master但是還有一種情況,先通過git init創(chuàng)建的本地倉庫,突然發(fā)現(xiàn)今天寫的代碼太優(yōu)美了,要整個(gè)遠(yuǎn)程倉庫存起來。
#初始化-建立本地倉庫 git?init#把本地倉庫與遠(yuǎn)程倉庫關(guān)聯(lián) git?remote?add?origin?git@gitee.com:RandyField/xxxxx.git#push git?push?-u?origin?master#但是可能會(huì)出現(xiàn)如下錯(cuò)誤!?[rejected]????????master?->?master?(non-fast-forward) error:?failed?to?push?some?refs?to?'git@gitee.com:RandyField/xxxxx.git' hint:?Updates?were?rejected?because?the?tip?of?your?current?branch?is?behind hint:?its?remote?counterpart.?Integrate?the?remote?changes?(e.g. hint:?'git?pull?...')?before?pushing?again. hint:?See?the?'Note?about?fast-forwards'?in?'git?push?--help'?for?details.#原因是創(chuàng)建遠(yuǎn)程倉庫,和本地倉庫沒有關(guān)聯(lián),也具有差異#把遠(yuǎn)程倉庫和本地同步,消除差異,把兩段不相干的分支進(jìn)行強(qiáng)行合并 git?pull?origin?master?--allow-unrelated-histories?git?add?-A git?commit?-m?"[dev]init" git?push?-u?origin?master12.變基->快進(jìn)合并
將提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一樣(將一個(gè)分支的修改操作在另一個(gè)分支最新的提交基礎(chǔ)上在依次應(yīng)用)。
#小明童鞋,克隆 git?clone?xxx.git#小明童鞋,創(chuàng)建了dev分支 git?switch?-c?devgit?add?. git?commit?-m?"c"git?add?xxx.go git?commit?-m?"update?xxx.go"git?add?App.vue git?commit?-m?"update?App.vue"#大明童鞋,克隆 git?clone?xxx.git git?add?main.js git?push?-u?origin?master#小明童鞋 git?switch?master git?pull git?switch?dev git?rebase?master #有沖突,需要手動(dòng)合并文件解決,解決沖突后使用git?add表示沖突已經(jīng)解決 git?add?. #表示繼續(xù)下一個(gè)沖突 git?rebase?--continue #切換至master git?switch?master #快進(jìn)合并 git?merge?dev#?其他命令 git?rebase?--skip?#表示跳過當(dāng)前沖突, git?rebase?--abort?#表示退出rebase模式,回到運(yùn)行g(shù)it?rebase?master命令之前的狀態(tài)rebase干了什么?
找到master和dev最近一個(gè)共同的父commit對(duì)象
并找出這個(gè)共同的父commit對(duì)象到dev分支最新提交對(duì)象之間的所有對(duì)象,將這些對(duì)象依次添加至master分支最新一次提交后。這個(gè)過程很像將一個(gè)數(shù)組追加到另一個(gè)數(shù)組,沒錯(cuò)append操作。
這時(shí)我們git rebase master會(huì)提示有沖突(因?yàn)槲覀冊(cè)趍aster和dev可能修改了相同的文件),對(duì)沖突文件進(jìn)行手工合共,然后git add .標(biāo)記沖突解決,git rebase --continue告訴Git沖突已經(jīng)解決。
在dev分支上變基(git rebase master)。這時(shí)我們回到msater分支執(zhí)行 git merge dev就可以進(jìn)行"快進(jìn)(fast-forward)"模式合并。
參考鏈接
https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA
https://www.jianshu.com/p/6960811ac89c
https://blog.csdn.net/fly_zxy/article/details/82586861
長按二維碼關(guān)注 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的【Git】Git-常用命令备忘录(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。