首頁 > 軟體

Git如何實現checkout遠端tag

2022-09-24 14:00:09

拉取專案

執行命令git clone:

git clone git@github.com:secbr/nacos.git

檢視遠端tag

執行命令git tag:

appledeMacBook-Pro-2:nacos apple$ git tag
0.2.1
0.2.1-RC1
0.3.0
0.3.0-RC1
0.4.0
...

此時可找到需要拉取的tag名稱。

checkout需要的tag

執行命令git checkout:

(base) appledeMacBook-Pro-2:nacos apple$ git checkout 2.0.2
Note: switching to '2.0.2'.

You are in 'detached HEAD' state. You can look around, make experimental
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 -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 1fac5c833 Merge pull request #6052 from alibaba/develop

其中2.0.2為tag(分支)名稱。

通過git branch命令可以檢視當前的分支情況:

(base) appledeMacBook-Pro-2:nacos apple$ git branch
* (HEAD detached at 2.0.2)
  develop

通過此種方式,獲得的分支Head處於遊離狀態,我們可以很方便地在歷史版本之間互相切換,比如需要回到某次提交,直接checkout對應的 commit id或者tag名即可。

但在這個基礎上的提交會新開一個匿名分支!也就是說我們的提交是無法可見儲存的,一旦切到別的分支,遊離狀態以後的提交就不可追溯了。

解決辦法就是新建一個分支儲存遊離狀態後的提交。

checkout作為一個分支

執行git checkout -b tagName (將tag checkout出去作為一個branch):

(base) appledeMacBook-Pro-2:nacos apple$ git checkout -b tag-2.0.2
Switched to a new branch 'tag-2.0.2'
(base) appledeMacBook-Pro-2:nacos apple$ git branch
  develop
* tag-2.0.2
(base) appledeMacBook-Pro-2:nacos apple$ git checkout -b tag-2.0.2
Switched to a new branch 'tag-2.0.2'
(base) appledeMacBook-Pro-2:nacos apple$ git branch
  develop
* tag-2.0.2

在遊離狀態下的tag中執行git checkout -b tag-2.0.2來新建一個分支。

當然上述checkout tag和checkout tag作為一個分支,可以合併成一個命令:

(base) appledeMacBook-Pro-2:nacos apple$ git checkout -b tag-1.4.2 1.4.2
Switched to a new branch 'tag-1.4.2'

上述命令,將遠端版本為1.4.2的tag,新建一個本地分支,名稱為tag-1.4.2。

新增遠端倉庫

(base) appledeMacBook-Pro-2:nacos apple$ git remote add tag-2.0.2 git@github.com:secbr/nacos.git

push並設定upstream

(base) appledeMacBook-Pro-2:nacos apple$ git push
fatal: The current branch tag-2.0.2 has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin tag-2.0.2

(base) appledeMacBook-Pro-2:nacos apple$ git push --set-upstream origin tag-2.0.2
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'tag-2.0.2' on GitHub by visiting:
remote:      https://github.com/secbr/nacos/pull/new/tag-2.0.2
remote:
To github.com:secbr/nacos.git
 * [new branch]          tag-2.0.2 -> tag-2.0.2
Branch 'tag-2.0.2' set up to track remote branch 'tag-2.0.2' from 'origin'.

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。 


IT145.com E-mail:sddin#qq.com