国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Git常用命令submodule

這篇具有很好參考價(jià)值的文章主要介紹了Git常用命令submodule。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Git常用命令submodule

1、需求

當(dāng)程序比較大參與開發(fā)人員較多時(shí),代碼管理就復(fù)雜起來。代碼如果全員可見,可以創(chuàng)建 share 分支維護(hù)共用代

碼,可以創(chuàng)建 core 分支維護(hù)核心算法代碼,各進(jìn)程分別占一個(gè)分支,定期同步 share 和 core 分支。代碼如果不

能全員可見,可以倉(cāng)庫(kù)中包含子倉(cāng)庫(kù),子倉(cāng)庫(kù)管理模塊代碼,主倉(cāng)庫(kù)定時(shí)更新。

同時(shí)有種情況我們經(jīng)常會(huì)遇到:某個(gè)工作中的項(xiàng)目需要包含并使用另一個(gè)項(xiàng)目。也許是第三方庫(kù),或者你獨(dú)立開發(fā)

的,用于多個(gè)父項(xiàng)目的庫(kù)?,F(xiàn)在問題來了:你想要把它們當(dāng)做兩個(gè)獨(dú)立的項(xiàng)目,同時(shí)又想在一個(gè)項(xiàng)目中使用另一

個(gè)。如果將另外一個(gè)項(xiàng)目中的代碼復(fù)制到自己的項(xiàng)目中,那么你做的任何自定義修改都會(huì)使合并上游的改動(dòng)變得困

難。Git 通過子模塊來解決這個(gè)問題,允許你將一個(gè) Git 倉(cāng)庫(kù)作為另一個(gè) Git 倉(cāng)庫(kù)的子目錄。它能讓你將另一個(gè)倉(cāng)

庫(kù)克隆到自己的項(xiàng)目中,同時(shí)還保持提交的獨(dú)立。

2、常用命令

# 添加子模塊
# 在主項(xiàng)目中添加子項(xiàng)目,URL為子模塊的路徑,path為該子模塊存儲(chǔ)的目錄路徑
git submodule add [repository_url] [path]

# 克隆含有子項(xiàng)目的主項(xiàng)目
git clone [repository_url]

# 遞歸的方式克隆整個(gè)項(xiàng)目
git clone <repository> --recursive 
# 當(dāng)你在克隆這樣的項(xiàng)目時(shí),默認(rèn)會(huì)包含該子項(xiàng)目的目錄,但該目錄中還沒有任何文件

# 初始化本地配置文件
# 初始化子模塊
git submodule init

# 從當(dāng)前項(xiàng)目中抓取所有數(shù)據(jù)并檢出父項(xiàng)目中列出的合適的提交
# 更新子模塊
git submodule update

# 等價(jià)于git submodule init && git submodule update
git submodule update --init

# 自動(dòng)初始化并更新倉(cāng)庫(kù)中的每一個(gè)子模塊,包括可能存在的嵌套子模塊
git clone --recurse-submodules [url]

# 拉取所有子模塊
git submodule foreach git pull 

3、使用

3.1 創(chuàng)建帶子模塊的版本庫(kù)

例如我們要?jiǎng)?chuàng)建如下結(jié)構(gòu)的項(xiàng)目:

project
  |--moduleA
  |--readme.txt
$ mkdir submoduletest

$ cd submoduletest/

創(chuàng)建 project 版本庫(kù),并提交 readme.txt 文件:

$ git init --bare project.git
Initialized empty Git repository in C:/Users/zhangshixing/Desktop/submoduletest/project.git/

$ git clone project.git project1
Cloning into 'project1'...
warning: You appear to have cloned an empty repository.
done.

$ cd project1

$ echo "This is a project." > readme.txt

$ git add .

$ git commit -m "add readme.txt"
[master (root-commit) 50a6933] add readme.txt
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 229 bytes | 229.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To C:/Users/zhangshixing/Desktop/submoduletest/project.git
 * [new branch]      master -> master

$ cd ..

創(chuàng)建 moduleA 版本庫(kù),并提交 a.txt 文件:

$ git init --bare moduleA.git
Initialized empty Git repository in C:/Users/zhangshixing/Desktop/submoduletest/moduleA.git/

$ git clone moduleA.git moduleA1
Cloning into 'moduleA1'...
warning: You appear to have cloned an empty repository.
done.

$ cd moduleA1

$ echo "This is a submodule." > a.txt

$ git add .

$ git commit -m "add a.txt"
[master (root-commit) d0f22fb] add a.txt
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt

$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 224 bytes | 224.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To C:/Users/zhangshixing/Desktop/submoduletest/moduleA.git
 * [new branch]      master -> master

$ cd ..

project 項(xiàng)目中引入子模塊 moduleA ,并提交子模塊信息:

$ cd project1

$ git submodule add ../moduleA.git moduleA
Cloning into 'C:/Users/zhangshixing/Desktop/submoduletest/project1/moduleA'...
done.

$ ls
moduleA/  readme.txt

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   .gitmodules
        new file:   moduleA

$ git diff

$ git add .

$ git commit -m "add submodule"
[master 60d9847] add submodule
 2 files changed, 4 insertions(+)
 create mode 100644 .gitmodules
 create mode 160000 moduleA

$ git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 352 bytes | 352.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To C:/Users/zhangshixing/Desktop/submoduletest/project.git
   50a6933..60d9847  master -> master

$ cd ..

使用 git status 可以看到多了兩個(gè)需要提交的文件,其中 .gitmodules 指定submodule的主要信息,包括子

模塊的路徑和地址信息,moduleA 指定了子模塊的commit id,使用git diff可以看到這兩項(xiàng)的內(nèi)容。這里需要

指出父項(xiàng)目的 git 并不會(huì)記錄 submodule 的文件變動(dòng),它是按照 commit id 指定 submodule 的 git header,所

.gitmodulesmoduleA 這兩項(xiàng)是需要提交到父項(xiàng)目的遠(yuǎn)程倉(cāng)庫(kù)的。

3.2 克隆帶子模塊的版本庫(kù)

方法一,先 clone 父項(xiàng)目,再初始化 submodule,最后更新 submodule,初始化只需要做一次,之后每次只需

要直接 update 就可以了,需要注意 submodule 默認(rèn)是不在任何分支上的,它指向父項(xiàng)目存儲(chǔ)的 submodule

commit id。

$ git clone project.git project2
Cloning into 'project2'...
done.

$ cd project2

$ ls
moduleA/  readme.txt

$ ls moduleA/
# 沒有內(nèi)容

$ git submodule init
Submodule 'moduleA' (C:/Users/zhangshixing/Desktop/submoduletest/moduleA.git) registered for path 'moduleA'

$ ls moduleA/
# 沒有內(nèi)容

$ git submodule update
Cloning into 'C:/Users/zhangshixing/Desktop/submoduletest/project2/moduleA'...
done.
Submodule path 'moduleA': checked out 'd0f22fbfd4336480863ed232ec785c0e507cf944'

$ ls moduleA/
a.txt

$ cd ..

方法二,采用遞歸參數(shù) --recursive,需要注意同樣 submodule 默認(rèn)是不在任何分支上的,它指向父項(xiàng)目存儲(chǔ)

的 submodule commit id。

$ git clone project.git project3 --recursive
Cloning into 'project3'...
done.
Submodule 'moduleA' (C:/Users/zhangshixing/Desktop/submoduletest/moduleA.git) registered for path 'moduleA'
Cloning into 'C:/Users/zhangshixing/Desktop/submoduletest/project3/moduleA'...
done.
Submodule path 'moduleA': checked out 'd0f22fbfd4336480863ed232ec785c0e507cf944'

$ cd project3/

$ ls
moduleA/  readme.txt


$ ls moduleA/
a.txt

3.3 修改子模塊

修改子模塊之后只對(duì)子模塊的版本庫(kù)產(chǎn)生影響,對(duì)父項(xiàng)目的版本庫(kù)不會(huì)產(chǎn)生任何影響,如果父項(xiàng)目需要用到最新的

子模塊代碼,我們需要更新父項(xiàng)目中 submodule commit id,默認(rèn)的我們使用 git status 就可以看到父項(xiàng)目中

submodule commit id 已經(jīng)改變了,我們只需要再次提交就可以了。

$ cd project1/moduleA

$ git branch
* master

$ echo "This is a submodule." > b.txt

$ git add .

$ git commit -m "add b.txt"
[master e9b6471] add b.txt
 1 file changed, 1 insertion(+)
 create mode 100644 b.txt

$ git push origin master
Counting objects: 2, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 230 bytes | 230.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To C:/Users/zhangshixing/Desktop/submoduletest/moduleA.git
   d0f22fb..e9b6471  master -> master

$ cd ..

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   moduleA (new commits)

no changes added to commit (use "git add" and/or "git commit -a")

$ git diff
diff --git a/moduleA b/moduleA
index d0f22fb..e9b6471 160000
--- a/moduleA
+++ b/moduleA
@@ -1 +1 @@
-Subproject commit d0f22fbfd4336480863ed232ec785c0e507cf944
+Subproject commit e9b647157369276e6e70fc148fc176676eab4476

$ git add .

$ git commit -m "update submodule add b.txt"
[master 312c8e0] update submodule add b.txt
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git push origin master
Counting objects: 2, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 308 bytes | 308.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To C:/Users/zhangshixing/Desktop/submoduletest/project.git
   60d9847..312c8e0  master -> master

$ cd ..

3.4 更新子模塊

更新子模塊的時(shí)候要注意子模塊的分支默認(rèn)不是 master。

方法一,先pull父項(xiàng)目,然后執(zhí)行 git submodule update,注意 moduleA 的分支始終不是master。

$ cd project2

$ git pull
remote: Counting objects: 2, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From C:/Users/zhangshixing/Desktop/submoduletest/project
   60d9847..312c8e0  master     -> origin/master
Fetching submodule moduleA
From C:/Users/zhangshixing/Desktop/submoduletest/moduleA
   d0f22fb..e9b6471  master     -> origin/master
Updating 60d9847..312c8e0
Fast-forward
 moduleA | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git submodule update
Submodule path 'moduleA': checked out 'e9b647157369276e6e70fc148fc176676eab4476'

$ cd ..

方法二,先進(jìn)入子模塊,然后切換到需要的分支,這里是 master 分支,然后對(duì)子模塊 pull,這種方法會(huì)改變子模

塊的分支。

$ cd project3/moduleA

$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

$ cd ..

$ git submodule foreach git pull
Entering 'moduleA'
remote: Counting objects: 2, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (2/2), done.
From C:/Users/zhangshixing/Desktop/submoduletest/moduleA
   d0f22fb..e9b6471  master     -> origin/master
Updating d0f22fb..e9b6471
Fast-forward
 b.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 b.txt

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   moduleA (new commits)

no changes added to commit (use "git add" and/or "git commit -a")

$ git diff
diff --git a/moduleA b/moduleA
index d0f22fb..e9b6471 160000
--- a/moduleA
+++ b/moduleA
@@ -1 +1 @@
-Subproject commit d0f22fbfd4336480863ed232ec785c0e507cf944
+Subproject commit e9b647157369276e6e70fc148fc176676eab4476

$ git add .

$ git commit -m "update submodule add b.txt"
[master 50e7e55] update submodule add b.txt
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git push origin master | git push -f origin master
Counting objects: 8, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (8/8), 824 bytes | 824.00 KiB/s, done.
Total 8 (delta 0), reused 0 (delta 0)
To C:/Users/zhangshixing/Desktop/submoduletest/project.git
 + 6e1a3d3...50e7e55 master -> master (forced update)

$ cd ..

3.5 刪除子模塊

有時(shí)子模塊的項(xiàng)目維護(hù)地址發(fā)生了變化,或者需要替換子模塊,就需要?jiǎng)h除原有的子模塊。

網(wǎng)上有好多用的是下面這種方法:

$ cd project1/

$ ls
moduleA/  readme.txt

$ git rm --cached moduleA
rm 'moduleA'

$ rm -rf moduleA

$ rm .gitmodules

$ vim .git/config

Git常用命令submodule

# 刪除submodule相關(guān)的內(nèi)容
[submodule "moduleA"]
      url = C:/Users/zhangshixing/Desktop/submoduletest/moduleA.git
	  active = true

Git常用命令submodule

# 然后提交到遠(yuǎn)程服務(wù)器
$ git add .

$ git commit -m "remove submodule"
[master 93e32f8] remove submodule
 2 files changed, 4 deletions(-)
 delete mode 100644 .gitmodules
 delete mode 160000 moduleA
 
$ git push origin master
Counting objects: 2, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (1/1), done.
Writing objects: 100% (2/2), 234 bytes | 234.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To C:/Users/zhangshixing/Desktop/submoduletest/project.git
   312c8e0..93e32f8  master -> master

但是我自己本地實(shí)驗(yàn)的時(shí)候,發(fā)現(xiàn)用下面的方式也可以,服務(wù)器記錄的是 .gitmodulesmoduleA,本地只要

用 git 的刪除命令刪除 moduleA,再用 git status 查看狀態(tài)就會(huì)發(fā)現(xiàn) .gitmodules 和 moduleA 這兩項(xiàng)都已經(jīng)改變

了,至于 .git/config,仍會(huì)記錄 submodule 信息,但是本地使用也沒發(fā)現(xiàn)有什么影響,如果重新從服務(wù)器克隆

則 .git/config 中不會(huì)有submodule信息。文章來源地址http://www.zghlxwxcb.cn/news/detail-472692.html

$ git rm moduleA
rm 'moduleA'

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   .gitmodules
        deleted:    moduleA

$ git commit -m "remove submodule"
[master 6e1a3d3] remove submodule
 2 files changed, 4 deletions(-)
 delete mode 160000 moduleA

$ git push origin master | git push -f origin master
Counting objects: 11, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (11/11), 1.05 KiB | 1.05 MiB/s, done.
Total 11 (delta 0), reused 0 (delta 0)
To C:/Users/zhangshixing/Desktop/submoduletest/project.git
 + 93e32f8...6e1a3d3 master -> master (forced update)

到了這里,關(guān)于Git常用命令submodule的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • git submodule 使用教程

    git submodule 使用教程

    (1)項(xiàng)目很大參與開發(fā)人員多的時(shí)候,需要將各個(gè)模塊文件進(jìn)行抽離單獨(dú)管理。 (2)使用git submodule來對(duì)項(xiàng)目文件做成模塊抽離,抽離出來的文件可單獨(dú)成為一個(gè)git倉(cāng)庫(kù)。整個(gè)主項(xiàng)目對(duì)抽離出來的子項(xiàng)目(子模塊)有依賴關(guān)系,卻又并不關(guān)心子項(xiàng)目(子模塊)的內(nèi)部開發(fā)流程

    2024年02月05日
    瀏覽(21)
  • git submodule

    用于在 Git 子模塊中初始化和更新子模塊。讓我們解釋一下命令的各個(gè)部分: git submodule:這是用于處理 Git 子模塊的主要 Git 命令。 –update 或 -u:此選項(xiàng)檢查超級(jí)項(xiàng)目中記錄的提交。它還將子模塊的工作目錄更新為超級(jí)項(xiàng)目中指定的提交。 –init 或 -i:此選項(xiàng)初始化在存儲(chǔ)庫(kù)

    2024年03月12日
    瀏覽(47)
  • 如何使用git submodule:添加、查看、更新、修改、刪除、克隆含submodule的項(xiàng)目

    Git submodule 功能可以讓我們?cè)谝粋€(gè)倉(cāng)庫(kù)中添加另一個(gè)倉(cāng)庫(kù)作為當(dāng)前倉(cāng)庫(kù)的子倉(cāng)庫(kù),這樣既方便了代碼管理,也免去我們重復(fù)造輪子的精力和時(shí)間。注意:Git submodules 只是某個(gè)倉(cāng)庫(kù)某一時(shí)刻的一個(gè)狀態(tài)的引用,即某個(gè) commit 的引用。 添加遠(yuǎn)程項(xiàng)目默認(rèn)分支 添加遠(yuǎn)程項(xiàng)目指定分支

    2024年02月04日
    瀏覽(28)
  • 【git】添加子模塊(submodule)

    【git】添加子模塊(submodule)

    有時(shí)候自己的項(xiàng)目需要用到別人的開源代碼,例如 freertos 和 tinyusb 這個(gè)時(shí)候有兩種選擇 將開源的代碼下載下來放到自己的 git 中管理 缺點(diǎn):如果遠(yuǎn)端倉(cāng)庫(kù)更新,自己倉(cāng)庫(kù)的代碼不會(huì)更新 將開源代碼通過子模塊(submodule)的形式加入到自己的倉(cāng)庫(kù)中 優(yōu)點(diǎn):自己倉(cāng)庫(kù)代碼時(shí)刻和上

    2024年01月17日
    瀏覽(98)
  • git submodule 如何同步更新

    git submodule 如何同步更新

    git submodule 更新之后, 如果在父?jìng)}庫(kù)里直接調(diào)用 “git submodule update --init --recursive” 會(huì)發(fā)現(xiàn) 子模塊的代碼不會(huì)更新。初學(xué)者會(huì)很迷惑,怎么能把子模塊更新到最新呢?方法如下 從父?jìng)}庫(kù)進(jìn)入到modules目錄(這個(gè)目錄是submodule生成的),調(diào)用”git pull origin master“ cd modules git pu

    2024年02月11日
    瀏覽(95)
  • git submodule 更新子倉(cāng)庫(kù)

    ??? 添加子倉(cāng)庫(kù) git 允許一個(gè)git倉(cāng)庫(kù)作為另外一個(gè)git倉(cāng)庫(kù)的子倉(cāng)庫(kù),并且保持父項(xiàng)目與子項(xiàng)目的相互獨(dú)立。 命令為 git submodule add 倉(cāng)庫(kù)地址 本地路徑 ??? 檢出子倉(cāng)庫(kù) 克隆一個(gè)包含子倉(cāng)庫(kù)的倉(cāng)庫(kù)目錄,并不會(huì)克隆子倉(cāng)庫(kù)的文件,只是會(huì)克隆下.gitmodule描述文件 需要進(jìn)一步克隆

    2024年02月16日
    瀏覽(79)
  • Git中submodule的使用

    Git中submodule的使用

    轉(zhuǎn)自: Git中submodule的使用 - 知乎 面對(duì)比較復(fù)雜的項(xiàng)目,我們有可能會(huì)將代碼根據(jù)功能拆解成不同的子模塊。主項(xiàng)目對(duì)子模塊有依賴關(guān)系,卻又并不關(guān)心子模塊的內(nèi)部開發(fā)流程細(xì)節(jié)。 這種情況下,通常不會(huì)把所有源碼都放在同一個(gè) Git 倉(cāng)庫(kù)中。 有一種比較簡(jiǎn)單的方式,是在當(dāng)前

    2024年03月14日
    瀏覽(18)
  • 5步刪除 git submodule

    5步刪除 git submodule

    1. 刪除submodule緩存 需要先暫存 .gitmodules 文件, 否則會(huì)報(bào)錯(cuò): fatal: please stage your changes to .gitmodules or stash them to proceed 1 2 git add .gitmodules git rm --cached submodule_name 2. 刪除submodule目錄 1 rm -rf submodule_name 3. 修改.gitmodules 移除對(duì)應(yīng)的submodule信息,只有1個(gè)submodule信息也可以刪除該文件。

    2024年02月12日
    瀏覽(362)
  • Git —— submodule 操作說明

    這里存在一個(gè)較大的坑,默認(rèn)檢出的子模塊并不屬于任何分支,而是一個(gè) “detached head” ,雖然可以提交更改,但是并沒有本地分支跟蹤提交的更改,這意味著 下次更新子模塊會(huì)丟失這些更改 。 因此在對(duì)子模塊進(jìn)行開發(fā)修改前,請(qǐng)先切換其所屬分支和對(duì)應(yīng)的 commit id。 由于

    2024年02月05日
    瀏覽(23)
  • Git系列文章目錄 - Git 子模塊git submodule使用

    項(xiàng)目中有時(shí)會(huì)遇到會(huì)涉及子模塊的使用,比如 flatpak 項(xiàng)目包含多個(gè)子模塊。 進(jìn)入需要添加子模塊的目錄,一般是項(xiàng)目根目錄。 刪除子模塊目錄及源碼: 刪除項(xiàng)目目錄下.gitmodules文件中子模塊相關(guān)條目: 刪除配置項(xiàng)中子模塊相關(guān)條目: 刪除模塊下的子模塊目錄: 清除子模塊

    2024年01月20日
    瀏覽(95)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包