命令概覽
git stash
git clone
git init
git remote
git branch
git checkout
git add
git commit
git rm
git push
git pull
git fetch
git merge
git log
git reset
git reflog
git revert
git cherry-pick
git tag
git rebase
命令解析
stash
-
git stash save 'xxx'
:儲存變更 -
git stash list
:查看儲存區(qū)所以提交列表 -
git stash pop
:彈出并應(yīng)用最近一次存儲記錄 -
git stash drop stash@{n}
:刪除某次存儲記錄 -
git stash clear
:清除所有stash信息
git clone
-
git cline xxx.git
遠(yuǎn)程倉庫拉到本地 -
git clone xxx.git -b dev1
遠(yuǎn)程倉庫拉到本地并切換到指定分支
git init
除了我們從遠(yuǎn)端建倉庫古涧,有的時候我們自己本地也是可以自己初始化一個 Git 倉庫來操作的垂券,這個時候我們就直接使用 git init
就能輕松為當(dāng)前目錄創(chuàng)建一個 git 倉庫,也就能開始對當(dāng)前目錄的改動納入版本管理庫了羡滑。
不過本地 init 的倉庫沒法和遠(yuǎn)端進行交互菇爪,所以我們還是需要去 github/gitlab 創(chuàng)建一個遠(yuǎn)端倉庫,然后關(guān)聯(lián)一下柒昏,也就是 git remote
命令了
-
git init
本地創(chuàng)建初始化倉庫 -
git remote
本地倉庫和線上倉庫關(guān)聯(lián)
git remote
用于和遠(yuǎn)程倉庫進行關(guān)系綁定處理等等操作凳宙。
-
git remote add
: 添加一個遠(yuǎn)程版本庫關(guān)聯(lián) -
git remote rm
: 刪除某個遠(yuǎn)程版本庫關(guān)聯(lián)
比如我們本地有個初始化好的倉庫,同時還有一個創(chuàng)建好的遠(yuǎn)程空倉庫职祷,那么我們就可以執(zhí)行一下操作讓他們關(guān)聯(lián)起來:
-
git remote add origin xxx.git
先添加到本地倉庫 -
git push -u origin master
:表示把當(dāng)前倉庫的 master 分支和遠(yuǎn)端倉庫的 master 分支關(guān)聯(lián)起來氏涩,后面我們執(zhí)行 push 或者 pull 都可以非常方便的進行操作了届囚。
git branch
拿到一個項目之后,你首先還是應(yīng)該看一下當(dāng)前倉庫現(xiàn)在有哪些分支是尖,不要待會創(chuàng)建新分支發(fā)現(xiàn)名字重復(fù)之類的問題意系,那這個時候我們就可以使用 git branch 來查看一下相關(guān)的分支了。
-git branch
:查看本地所有分支信息
-git branch -r
:查看遠(yuǎn)程倉庫所有分支
-git branch -a
:查看本地和遠(yuǎn)程倉庫所有分支
一般來說如果分支太多的話饺汹,還是建議使用可視化工具來查看分支信息蛔添,比如 vscode 或者 source tree 等軟件等等。
當(dāng)然 IDEA 也是可以的首繁。
git checkout
如果我們想以當(dāng)前分支為基準(zhǔn)作郭,創(chuàng)建一個新的分支并切換過去,可以使用如下命令弦疮。
-
git checkout -b dev2
創(chuàng)建并切換到指定新分支
git add
我們在某個分支更改了代碼之后夹攒,想要把它提交一下,那么你第一步要做的就是胁塞,執(zhí)行git add
git add [file1] [file2]
: 添加一個或多個文件到暫存區(qū)
一般我們平時在使用的時候咏尝,用的比較多的應(yīng)該還是:
git add .
:把當(dāng)前目錄下得所有文件改動都添加到暫存區(qū)
git add -A
:把當(dāng)前倉庫內(nèi)所有文件改動都添加到暫存區(qū)
用的最多的還是這個 git add -A 命令,因為大多數(shù)情況啸罢,我們都應(yīng)該把所有變更都加到暫存區(qū)里编检,如果沒有,那大概率是忘了扰才。
git commit
文件添加到暫存區(qū)之后允懂,我們就可以執(zhí)行下一步操作了。
git commit [file1] ... -m [message]
:將暫存區(qū)的內(nèi)容提交到本地 git 版本倉庫中
-m
表示的是當(dāng)前提交的信息
-a
對于已經(jīng)被納入 git 管理的文件(該文件你之前提交過 commit)衩匣,那么這個命令就相當(dāng)于幫你執(zhí)行了上述 git add -A蕾总,你就不用再 add 一下了;對于未被 git 管理過的(也就是新增的文件)琅捏,那么還是需要你先執(zhí)行一下 git add -A生百,才能正確被 commit 到本地 git 庫。
通常情況下柄延,我們用的比較多得應(yīng)該是 git commit -m 'feat: do something'
蚀浆,設(shè)置當(dāng)前提交的信息。當(dāng)然搜吧,如果你沒有強訴求需要 git add
和 git commit
一定要分開市俊,那你大可選擇 git commit -am
,方便又快捷滤奈。
git rm
-
git rm a.html
刪除git倉庫中某個文件 -
.gitignore
項目中此文件表示需要被 git 忽略提交
這個其實也挺有用的秕衙,比如我們項目中有個文件叫 .env
,這個文件是一個私有的僵刮,不能被提交到遠(yuǎn)程的据忘,但是我們不小心提交到了本地倉庫中,這個時候我們把這個文件添加到 .gitignore
文件中,表示需要被 git
忽略提交,但是由于我們已經(jīng)提交到本地倉庫了墨榄,所以如果不先從git
倉庫刪除是沒用的武翎。
如果直接右鍵刪除,那么這個文件的記錄還是會被保存到遠(yuǎn)端倉庫包斑,別人還是能看得到你這個信息,所以我們需要先從 git
倉庫中刪掉這個文件才行。
git rm .env
:執(zhí)行完這個命令就表示 .env
文件從git
倉庫中刪除了针史,配合 `.gitignore 就能保證以后所有的 .env 文件變更都不用擔(dān)心被提交到遠(yuǎn)程倉庫。
git rm -r dist
:如果我們要刪除的是一個目錄碟狞,那么加上-r
參數(shù)就好了啄枕。
git push
-
git push --set-upstream origin branch1
推送分支并建立關(guān)聯(lián)關(guān)系
接下來我們想要把剛創(chuàng)建好得分支推送到遠(yuǎn)端,一般來說我們可能會需要用到 git push族沃,但我們這是個新分支频祝,根本沒和遠(yuǎn)端倉庫建立任何聯(lián)系,那么我們就需要加點參數(shù)脆淹,讓他們關(guān)聯(lián)上:
-
git push --set-upstream origin branch1
推送分支并建立關(guān)聯(lián)關(guān)系
完事之后我們可以再去遠(yuǎn)程倉庫看一眼就會發(fā)現(xiàn)我們創(chuàng)建的新分支已經(jīng)推上去了常空。接下來可能會有小伙伴要問了,那如果遠(yuǎn)端倉庫已經(jīng)有了這個分支名咋整盖溺?
這里就分兩種:
1.一種就是你本地的代碼和遠(yuǎn)端代碼沒有沖突的情況下漓糙,并且你本地有新增提交,那么你可以仍然執(zhí)行上述命令烘嘱,這樣就會直接將當(dāng)前本地分支合遠(yuǎn)程分支關(guān)聯(lián)上昆禽,同時把你的改動提交上去。
2.另一種就是本地分支和遠(yuǎn)端分支存在沖突拙友,這個時候你執(zhí)行上述命令就會出現(xiàn)提示沖突为狸,那么接下來就需要你先把遠(yuǎn)端當(dāng)前分支的代碼拉下來,解決一下沖突了遗契,就需要用到 git pull 命令了辐棒。
git pull
通常情況下,如果當(dāng)前分支已經(jīng)和遠(yuǎn)端分支建立了聯(lián)系牍蜂,那么我們想要合并一下遠(yuǎn)端分支漾根,只需要執(zhí)行 git pull
就好了,不用帶其他參數(shù)鲫竞,但如果和上面提到的 git push 時產(chǎn)生了沖突辐怕,還沒有建立聯(lián)系的時候,我們就需要指定需要拉取哪個分支的代碼下來進行合并了从绘。
-
git pull origin branch1
:拉取指定遠(yuǎn)端分支合并到本地當(dāng)前分支
這里的 origin
是我們對遠(yuǎn)端倉庫的命名寄疏,想改也是可以的是牢,不過一般都是用的 origin
。
回到上面提到的沖突問題陕截,我們可以直接使用 git pull
然后指定合并當(dāng)前本地分支想要建立聯(lián)系的遠(yuǎn)程分支驳棱,然后本地解決一下沖突,然后提交一下改動农曲,再執(zhí)行 git push --set-upstream origin branch1
命令就大功告成了社搅。
git fetch
了解完上面描述的 git pull
,命令之后乳规,其實這個命令也很好理解了形葬,特定時候,可能我們只是想把遠(yuǎn)端倉庫對應(yīng)分支的變更拉到本地而已暮的,并不想自動合并到我的工作區(qū)(你當(dāng)前正在進行代碼變更的工作區(qū))笙以,等晚些時候我寫完了某部分的代碼之后再考慮合并,那么你就可以先使用git fetch
青扔。
fetch 完畢之后源织,我提交了自己當(dāng)前工作去的變更到本地倉庫,然后想合并一下遠(yuǎn)端分支的更改微猖,這個時候執(zhí)行一下git merge origin/[當(dāng)前分支名]
(默認(rèn)一般是用 origin 表示遠(yuǎn)端的分支前綴)即可谈息。
git merge
合并指定分支代碼到當(dāng)前分支。一般來說凛剥,我們用的比較多的場景可能是侠仇,遠(yuǎn)端倉庫 master 分支有變更了,同時這個時候我們準(zhǔn)備提 MR 了犁珠,那么就需要先合一下 master 的代碼逻炊,有沖突就解決下沖突,那這個時候我們可以做以下操作:
切到 master 分支犁享,git pull
拉一下最新代碼
切回開發(fā)分支余素,執(zhí)行 git merge master
合并一下 master 代碼
同理,上面介紹的 git merge origin/xxx
也是一樣的用法炊昆。
git log
顧名思義桨吊,就是日志的意思,執(zhí)行這個命令之后凤巨,我們能看到當(dāng)前分支的提交記錄信息视乐,比如 commitId 和提交的時間描述等等,大概長下面這樣:
commit e55c4d273141edff401cbc6642fe21e14681c258 (HEAD -> branch1, origin/branch1)
Author: name <44311619+STDSuperman@xxx.xxx.github.com>
Date: Mon Aug 1 23:16:11 2022 +0800
Initial commit
這個時候可能有讀者會問了敢茁,這個都用來干啥的佑淀,簡單的用法呢就是看看有誰提交了啥,還有更重要的用法呢就是進行代碼版本的回滾彰檬,或者其他有意思的操作伸刃,且聽筆者為你微微道來谎砾。
git reset
git reset [--soft | --mixed | --hard] [HEAD]
關(guān)于 HEAD:
HEAD 表示當(dāng)前版本
HEAD^ 上一個版本
HEAD^^ 上上一個版本
HEAD^^^ 上上上一個版本
HEAD~n 回撤 n 個版本,這種也是更加方便的
參數(shù)解析
以下解析均基于后接參數(shù)為 HEAD^
捧颅,也就是git reset HEAD^
棺榔。
--soft
: 重置你最新一次提交版本,不會修改你的暫存區(qū)和工作區(qū)隘道。
--mixed
: 默認(rèn)參數(shù),用于重置暫存區(qū)的文件與上一次的提交(commit)保持一致郎笆,工作區(qū)文件內(nèi)容保持不變谭梗。
--hard
: 重置所有提交到上一個版本,并且修改你的工作區(qū)宛蚓,會徹底回到上一個提交版本激捏,在代碼中看不到當(dāng)前提交的代碼,也就是你的工作區(qū)改動也被干掉了凄吏。
說了半天似乎不是很好理解远舅,我們舉個栗子理解下:
比如:
我改動了我的README
文件,在我們的工作區(qū)就產(chǎn)生了一次改動痕钢,但是這個時候還沒有提交到暫存區(qū)图柏,在vscode
里會顯示為工作區(qū)修改的標(biāo)記
接著我們執(zhí)行git add
,這個時候你查看暫存區(qū)任连,會發(fā)現(xiàn)這次改動被提交進去了蚤吹,同時被 vscode
標(biāo)記為已被提交至?xí)捍鎱^(qū)
然后再執(zhí)行 git commit
,這個時候就完成了一次提交
接下來我們想撤回這次提交随抠,以上三種參數(shù)所體現(xiàn)的表現(xiàn)會是這樣的:
--soft
:我們對 README 的更改狀態(tài)現(xiàn)在變成已被提交至?xí)捍鎱^(qū)裁着,也就是上面 2 的步驟。
--mixed
: 我們對 README 的更改變成還未被提交至?xí)捍鎱^(qū)拱她,也就是上面 1 的步驟二驰。
--hard
:我們對 README 的所有更改全沒了,git log 中也找不到我們對 README 剛剛那次修改的痕跡秉沼。
默認(rèn)情況下我們不加參數(shù)桶雀,就是 --mixed,也就是重置暫存區(qū)的文件到上一次提交的版本氧猬,文件內(nèi)容不動背犯。一般會在什么時候用到呢?
場景一(撤銷 git add)
可能大部分情況下盅抚,比如 vscode 其實大家更習(xí)慣于使用可視化的撤銷能力漠魏,但是呢,這里我們其實也可以稍微了解下這其中的奧秘妄均,其實也很簡單:
方式一:git reset
方式二:git reset HEAD
其實一二都是一樣柱锹,如果 reset 后面不跟東西就是默認(rèn) HEAD哪自。
場景二 (撤銷 git commit)
當(dāng)你某個改動提交到本地倉庫之后,也就是commit
之后禁熏,這個時候你想撤回來壤巷,再改點其他的,那么就可以直接使用git reset HEAD^
瞧毙。這個時候你會驚奇的發(fā)現(xiàn)胧华,你上一版的代碼改動,全部變成了未被提交到暫存區(qū)的狀態(tài)宙彪,這個時候你再改改代碼矩动,然后再提交到暫存區(qū),然后一起再commit
就可滿足你的需求了释漆。
除了這種基礎(chǔ)用法悲没,我們還可以配合其他命令操作一下。
場景三
某一天你老板跟你說男图,昨天新加的功能不要了示姿,給我切回之前的版本看看效果,那么這個時候逊笆,你可能就需要將工作區(qū)的代碼回滾到上一個commit
版本了栈戳,操作也十分簡單:
git log
查看上一個commit
記錄,并復(fù)制commitId
git reset --hard commitId`直接回滾览露。
場景四
果某一個你開發(fā)需求正開心呢荧琼,突然發(fā)現(xiàn),自己以前改的某個東西怎么不見了差牛,你想起來好像是某次合并命锄,沒注意被其他提交沖掉了,你心一想偏化,完了脐恩,寫了那么多,怎么辦侦讨?很簡單驶冒,回到有這份代碼的那個版本就好了(前提你提交過到本地倉庫)。
假設(shè)我們有這么兩個提交記錄韵卤,我們需要下面那個 365 開頭 commitId 的代碼:
commit e62b559633387ab3a5324ead416f09bf347d8e4a (HEAD -> master)
Author: xiaohang.lin <xiaohang.lin@alibaba-inc.com>
Date: Sun Aug 14 18:08:56 2022 +0800
merge
commit 36577ea21d79350845f104eee8ae3e740f19e038 (origin/master, origin/HEAD)
Author: 陌小路 <44311619+STDSuperman@users.noreply.github.com>
Date: Sun Aug 14 15:57:34 2022 +0800
Update README.md
搶救第一步 git log
找到有你這個代碼的那個 commitId(也就是 36577ea21d79350845f104eee8ae3e740f19e038)
搶救第二步 git reset --hard commitId
第三步:Ctrl + c 你的目標(biāo)代碼
這個時候你想把復(fù)制好的代碼寫回去骗污,該怎么辦呢,你可能會再 git log
看一下我們 reset 之前的 commitId沈条,你會發(fā)現(xiàn)需忿,完了,之前的 commitId 都沒了,只有這個 365 了屋厘。
commit 36577ea21d79350845f104eee8ae3e740f19e038 (origin/master, origin/HEAD)
Author: 陌小路 <44311619+STDSuperman@users.noreply.github.com>
Date: Sun Aug 14 15:57:34 2022 +0800
Update README.md
不要慌涕烧,請記住一句話,只要你不刪你本地的 .git 倉庫汗洒,你都能找回以前所有的提交议纯。
git log
看不到的話,我們就可以祭出我們的絕招了:git reflog
36577ea (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to 36577ea21d79350845f104eee8ae3e740f19e038
e62b559 HEAD@{1}: reset: moving to e62b559633387ab3a5324ead416f09bf347d8e4a
這里我們可以看到兩行記錄溢谤,一個是我們執(zhí)行 reset 到 365 的記錄瞻凤,另一條不知道是啥,不重要世杀,我們想回到我們剛剛 reset 之前的狀態(tài)也很簡單鲫构,直接復(fù)制它上一次的變動也就是這個 e62b559,然后執(zhí)行 git reset --hard e62b559玫坛,然后你會驚奇的發(fā)現(xiàn),你之前的代碼又回來了包晰。
接下來把你以前版本的代碼湿镀,再 Ctrl + v 放進來就完成了。
git reflog
介紹:用來查看你的所有操作記錄伐憾。
既然git log
看不到我之前 commitId 了勉痴,那么就回到 reset 之前的狀態(tài)吧!
git revert
當(dāng)然了树肃,如果是針對master
的操作蒸矛,為了安全起見,一般還是建議使用revert
命令胸嘴,他也能實現(xiàn)和reset
一樣的效果雏掠,只不過區(qū)別來說,reset
是向后的劣像,而 revert
是向前的乡话,怎么理解呢?簡單來說耳奕,把這個過程當(dāng)做一次時光穿梭绑青,reset
表示你犯了一個錯,他會帶你回到?jīng)]有犯錯之前屋群,而revert
會給你一個彌補方案闸婴,采用這個方案之后讓你得到的結(jié)果和沒犯錯之前一樣。
舉個栗子:
假設(shè)你改了README
的描述芍躏,新增了一行文字邪乍,提交上去了,過一會你覺得這個寫了有問題,想要撤銷一下溺欧,但是又不想之前那個提交消失在當(dāng)前歷史當(dāng)中喊熟,那么你就可以選擇使用 git revert [commitId]
,那么它就會產(chǎn)生一次新的提交姐刁,提交的內(nèi)容就是幫你刪掉你上面新增的內(nèi)容芥牌,相當(dāng)于是一個互補的操作。
PS D:\Code\other\git-practice> git revert 3b18a20ad39eea5264b52f0878efcb4f836931ce
On branch branch2
Your branch is ahead of 'origin/branch2' by 1 commit.
(use "git push" to publish your local commits)
這個時候聂使,它會提示你可以把新的改動 push
上去了壁拉。
其實你如果在 gitlab 進行 mr 之后,想要回滾這個 mr
柏靶,一般它會給你一個revert
的按鈕選項弃理,讓你進行更安全的回滾操作。
git cherry-pick
其實對于我們工作中大部分場景下應(yīng)該用不到這個功能屎蜓,但是呢有的時候這個命令又能挽救你于水火之間痘昌,那就是當(dāng)某個倒霉蛋忘記切分支,然后在master
分支上改了代碼炬转,并且提交到了本地倉庫中辆苔,這個時候使用git cherry-pick
簡直就是神器了。
git cherry-pick
:將執(zhí)行分支的指定提交合并到當(dāng)前分支扼劈。
一聽介紹就來精神了驻啤,雀氏有點東西,比如我在master
分支提交了某個需求的代碼荐吵,同時還沒提交到遠(yuǎn)程分支骑冗,那么你就可以先git log
查看一下當(dāng)前的提交,找到 master 分支正常提交之后的所有commitId
先煎,然后復(fù)制出來贼涩,然后再切到你建好的開發(fā)分支,接著執(zhí)行
git cherry-pick master commitId1 commitId2 commitId4
薯蝎。
完事之后記得清理一下作案現(xiàn)場磁携,把你的 master 分支代碼恢復(fù)到正常的提交上去。
git tag
顧名思義良风,也就是打標(biāo)簽的意思谊迄。一般可能會在你發(fā)布了某個版本,需要給當(dāng)前版本打個標(biāo)簽烟央,你可以翻閱 vite 的官方 git 倉庫统诺,查看它的 tag 信息,它這里就標(biāo)注了各個版本發(fā)布時候的 tag 標(biāo)簽疑俭。
它有兩種標(biāo)簽形式粮呢,一種是輕量標(biāo)簽,另一種是附注標(biāo)簽。
輕量標(biāo)簽
- 創(chuàng)建方式:
git tag v1.0.0
它有點像是對某個提交的引用啄寡,從表現(xiàn)上來看豪硅,它又有點像基于當(dāng)前分支提交給你創(chuàng)建了一個不可變的分支,它是支持你直接 checkout
到這個分支上去挺物,但是它和普通分支還是有著本質(zhì)的區(qū)別的懒浮,如果你切換到了這個tag "分支"
,你去修改代碼同時產(chǎn)生了一次提交识藤,亦或者是reset
版本砚著,這對于該tag
本身不會有任何影響,而是為你生成了一個獨立的提交痴昧,但是卻在你的分支歷史中是找不到的稽穆,你只能通過commitId
來切換到本次提交,看圖:
那如果你從其他分支通過 commitId 切換到這個改動上赶撰,它會提示你以下內(nèi)容:
Note: switching to 'be276009'.
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
大致意思就是你可以選擇丟棄或者保留當(dāng)前更改舌镶,如果需要保留的話直接使用下面的 git switch
命令創(chuàng)建一個新分支即可。
附注標(biāo)簽
創(chuàng)建方式:git tag -a v1.0.1 -m "發(fā)布正式版 1.0.1"
引用官方文檔的描述:
而附注標(biāo)簽是存儲在 Git 數(shù)據(jù)庫中的一個完整對象豪娜, 它們是可以被校驗的乎折,其中包含打標(biāo)簽者的名字、電子郵件地址侵歇、日期時間, 此外還有一個標(biāo)簽信息吓蘑,并且可以使用 GNU Privacy Guard (GPG)簽名并驗證惕虑。
從概念上看,輕量標(biāo)簽更像是一個臨時的標(biāo)簽磨镶,而附注標(biāo)簽更加正式一點溃蔫,能夠保留更多的信息。它創(chuàng)建的方式和輕量標(biāo)簽區(qū)別主要是-a
和-m
參數(shù)琳猫,如果你的-m
參數(shù)不傳伟叛,那么編輯器會讓你手動填寫。
對比標(biāo)簽信息
打完標(biāo)簽之后脐嫂,我們可以使用 git show
命令來看看這兩種標(biāo)簽最終體現(xiàn)的信息有哪些。
輕量標(biāo)簽
commit dcbd335be87f51eaa0cc1852400e64e9f46e84d8 (HEAD -> test-branch1, tag: v1.0.2, tag: v1.0.1)
Author: STDSuperman <2750556766@qq.com>
Date: Tue Aug 16 22:54:36 2022 +0800
xx
diff --git a/README.md b/README.md
index 715766a..b4cdea6 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
-# git-practice
\ No newline at end of file
+# git-practice
+
+test tag
附注標(biāo)簽
tag v1.0.1
Tagger: STDSuperman <2750556766@qq.com>
Date: Tue Aug 16 22:58:27 2022 +0800
發(fā)布正式版 1.0.0
commit dcbd335be87f51eaa0cc1852400e64e9f46e84d8 (HEAD -> test-branch1, tag: v1.0.1)
Author: STDSuperman <2750556766@qq.com>
Date: Tue Aug 16 22:54:36 2022 +0800
xx
diff --git a/README.md b/README.md
index 715766a..b4cdea6 100644
--- a/README.md
+++ b/README.md
推送標(biāo)簽
git push origin tagName
$> git push origin v1.0.1
Enumerating objects: 6, done.
Counting objects: 100% (6/6), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 448 bytes | 448.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:STDSuperman/git-practice.git
* [new tag] v1.0.1 -> v1.0.1
當(dāng)然账千,附注標(biāo)簽和輕量標(biāo)簽都是可以被推送到遠(yuǎn)端的侥蒙。
其他命令
查看標(biāo)簽:git tag
篩選標(biāo)簽:git tag -l v1.0.1
刪除標(biāo)簽:git tag -d v1.0.1
刪除遠(yuǎn)程標(biāo)簽:git push origin --delete v1.0.2
另一種刪除遠(yuǎn)程方式(表示將“:”前面空值替換到遠(yuǎn)程,也不失為一種方式):git push origin :refs/tags/v1.0.1
git rebase
這塊其實涉及的玩法會相對來說復(fù)雜一點匀奏,可能還是需要拿來和 merge 做一下對比才更加有意義鞭衩,東西有點多,先擱置一下。
WIP...