git 添加外部項目地址


github 提交第三方模塊流程

// git config --global user.name 'your name' 可以設置全局用戶名,在commit記錄里顯示的是這個配置設置的名稱。
// git config --global user.email 'your email' 可以設置全局用戶郵箱。
// git config user.name 可以查看當前設置的用戶名
 

一、模塊的創建及更新

1.創建模塊
--新建一個github倉庫repository,比如:git_submodule
--新建文件夾,比如:learngit
--進入到文件夾中,打開git bash
2.開發模塊內容
--git clone git_submodule 的url地址,將創建的項目克隆到本地
--編輯項目內容,比如:新建一個txt文件,並填入一些內容。
3.提交修改本地
--cd 到子模塊文件夾中
--git status 查看修改
--git add . ,將所有改動添加到緩存區中
--git status,查看添加的狀態
--git commit -m 'creat new .txt file', 提交並對更改進行說明
4.首次更新到遠程
--ssh-keygen -t rsa -C "youremail@example.com",在本地創建公鑰。
(email地址改成自己的github郵箱地址)
--把C:\Users\Administrator\.ssh中,id_rsa.pub公鑰中的內容添加到github。(titile隨便寫)
 
    
 
--git remote add origin git@github.com:asd571362/git_submodule.git,
(替換成自己的用戶名和項目名),關聯遠程倉庫。
如果已經存在,執行git remote rm origin,再執行上一步。
-- git push --set-upstream origin master,首次推送並設置關聯遠程master分支
5.模塊后續更新。
--執行2、3步驟,略過第4步。
--git pull,查看是否有沖突,如有沖突,進行修改。然后重新執行2、3步驟。
--git push 推送更新到遠程。
 
二、作為子模塊集成及更新到第三方平台
1.fork 平台項目
--到對應的平台項目頁面,點擊fork
2.子模塊集成到平台
--git clone fork后的url地址
--git submodule add 子模塊地址 平台子模塊文件夾/git_submodule , 平台子模塊文件夾為平台中第三方模塊添加的位置,不同平台可能不一樣,以平台說明為准。
--git status 查看倉庫狀態
--git commit -m 'add git_submodule'
--git remote add origin git@github.com:asd571362/JS.git,首次關聯遠程倉庫
--git push --set-upstream origin master,首次提交到遠程倉庫
--提交成功后,在平台子模塊文件夾中出現了git_submodule模塊,
@后面的是當前子模塊指向的commit版本號
--點擊pull request 提交更新請求,平台維護方同意后就可以出現在平台源地址。
3.子模塊更新到平台
--子模塊更新必須對接平台的最新版本,可以刪除重新fork。(也有其它設置的方法,但是重新fork比較簡單)
--git clone fork后的url地址
--cd 到 子模塊的父文件夾
--git submodule init 子模塊名稱,初始化子模塊(只添加子模塊版本的指針,文件夾是空的)
--git submodule update 子模塊名稱,更新平台中的子模塊文件到本地
-- cd git_submodule/,進到子模塊分支顯示的是之前指向的版本號。
--git checkout master ,切換到主分支
--git pull ,查看是否有沖突
--git merge origin/master 合並遠程分支
--cd .. ,git status,回到上層目錄,查看倉庫狀態
--git pull , git add . ,git commit -m 'update git_submodule'
--git push, 成功后fork的項目中子模塊的版本會更新到最新版本
最后,pull request。

 

 

待解決:每次重新克隆后,push失敗,需要重新關聯remote項目?

 

git submodule使用以及注意事項

一、背景

在平時的軟件開發過程中常常會有這樣的場景,自己負責的某個模塊會依賴其他模塊或者第三方的library。這時你自己的模塊是一個獨立的代碼倉庫,你想要實現這樣一種功能,當你從你的模塊的代碼倉庫里把代碼拉到本地來的時候,能自動的將你依賴的模塊或第三方庫都拉到指定的目錄當中去。

當然要實現這個功能的方法有很多,比如使用repo之類的工具,又比如如果你使用的是svn作為版本管理工具,那么你可以使用svn的external機制來引用第三方的project。

這里要說的是使用git作為版本管理工具的情況。

二、git submodule

其它的細枝末節就不再贅述了,咱直奔主題。

先來看具體用例:

目前有一個模塊A,其代碼倉庫的地址為:projectA.git, 它需要引用另一個模塊B, 其代碼倉庫的地址為:projectB.git。

假設模塊A的本地目錄為:projectA

希望引用模塊B為模塊A的子模塊,其在模塊A目錄下的路徑為: projectA/projectB

這里我們通過git 的submodule機制來實現。

比如在命令行里可以直接使用如下命令:

cd projectA
git submodule add projectB.git projectB 
  • 1
  • 2
  • 3

注: 這個submodule的 子目錄指定時不能以 “/”結尾, 比如上面的命令,就不能寫成 projectB/ 這個樣子。

就這么簡單的一句git命令就可以搞定了,當然這還沒完,運行完這個命令之后,在projectA目錄執行git status命令,可以看到如下的結果:

 


submodule
 

 

這時需要使用git commit命令和git push命令,將添加模塊B為模塊A的子模塊的結果push到模塊A的代碼倉庫里面去。

三、git clone包含子模塊的代碼倉庫

此時,就可以使用git clone命令來抓取模塊A的代碼倉庫,但要同時抓取到子模塊的倉庫的話,還需要一些方法:

  • 正常的使用git clone命令,然后再使用 git submodule init 和git submodule update來獲取子模塊
git clone projectA.git
cd projectA git submodule init git submodule update
  • 1
  • 2
  • 3
  • 4

其運行結果如下:

 


submodule_init_update
 

 

  • 在使用git clone命令時,加上–recurse-submodules或–recursive 這樣的遞歸參數
git clone --recursive projectA.git
  • 1

其運行結果如下:

 


clone_recursive
 

 

四、tortoisegit操作submodule

如果是使用tortoisegit的話,也可以使用圖形化界面進行submodule的相關操作,如添加submodule就選擇如下圖所示的菜單:

 


tortoise_submodule
 

 

添加子模塊的界面大概就是下面這個樣子:

 


tortoise_sub_add
 

 

這里和上面一樣“path”一欄不能以”/”結尾。 填寫之后,點擊OK,就會在主模塊的目錄下添加對應的子模塊。

在clone時也是一樣的,它既可以只是clone,然后用上面菜單中,Submodule Update 選項來抓取子模塊的內容,也可以在clone時選擇遞歸參數,如下所示:

 


tortoise_clone
 

 

五、忽略submodule中的修改或新增文件

我們引用第三方的project,大多數情況都是想以“只讀”的方式引用,不關心第三方project抓取下來之后是不是被修改,或者是在其目錄中添加了untracked的file, 因為我們只是拉取第三方的project,而不會(往往時不能或不允許)對第三方project進行提交。

以上面的模塊A和模塊B的例子來說,如果模塊A和模塊B中都有進行修改,其結果可能就是如下這個樣子:

 


modify_A_B
 

 

這並不是我們想要的結果。一開始的時候我的想法是使用 .gitignore 來忽略submodule的修改,但是無法做到,后來經過一番搜索,終於找到了解決良葯。在添加了submodule之后,project的目錄下回生成一個.gitmodules文件,這個文件記錄了子模塊的路徑和倉庫地址等信息,如下圖所示:


gitmodules
 

 

我們要做的就是在[submodule “projectB”]中添加一個ignore子項,這個ignore子項可以有上個可選的值,untracked, dirty和all, 它們的意思分別是:

  • untracked :忽略 在子模塊B(也就是projectB目錄)新添加的,未受版本控制內容
  • dirty : 忽略對projectB目錄下受版本控制的內容進行了修改
  • all : 同時忽略untracked和dirty

這里我們先選擇dirty(至少先保證不提交對子模塊B的任何修改),其他的可以根據具體需求來進行選擇。

添加ignore子項之后的.gitmodules文件的內容如下所示:

 


submodule_ignore
 

 

然后我們再使用git status查看,可以得到圖下結果:

 


submoule_status
 

 

可以看出,之前 “modified: projectB(modified content)” 已經不見了, 此時對修改后的.gitmodules文件進行commit和push, 之后在查看status或做commit時就可以忽略掉對子模塊B修改的部分了。

如何將Android studio中的項目導入到第三方的git托管庫中

版權聲明:本文為博主原創文章,轉載留下原文鏈接。 https://blog.csdn.net/IT_XF/article/details/80430761

准備工具

  • git
    我們需要在git官網下載最新的git工具,並且將其配置到環境變量中

  • 第三方代碼托管的網站
    GitHubcoding碼雲
    本篇文章我將以coding作為例子


新建項目

假設此時你已經下載並安裝好了git,也在coding上注冊了賬號。

那我們點擊coding上的創建項目
這里寫圖片描述

輸入好項目名稱,然后添加項目描述,在選擇私有項目和公開項目的時候注意下,如果不是銀牌會員以上,在coding上只能創建5個私有項目,當然,你也可以不花錢,升級成銀牌會員,然后就可以有10個私有倉庫了。不過公開項目倒是可以無限創建。

所有都輸入完畢后,我們點擊新建項目,之后會來到以下界面
這里寫圖片描述


初始化本地倉庫

現在我們電腦上已經有一個Android studio項目了,我們要怎樣將電腦本地的項目上傳到已經准備好到代碼托管庫中呢

首先我們通過cmd中的cd命令進入到我們的項目中,使用如下命令將我們本地的項目變成有git倉庫的項目

git init
  • 1

這里寫圖片描述

使用完該命令后,本地項目會多出一些文件
這里寫圖片描述

其實使用了git init命令后,本地已經是一個git倉庫的狀態了,已經可以正常使用git了,所以我們使用以下命令,將當前所有的代碼都添加到本地倉庫中

git add *
  • 1

然后做一次提交操作,將代碼都提交到倉庫中

git commit -m "首次提交"
  • 1

現在,我們將本地倉庫和coding上到倉庫做一個綁定處理

其實怎么綁定,在coding上創建項目的時候,coding都告訴我們了
這里寫圖片描述
我們只需要順序使用這兩行命令就搞定了

git remote add origin https://git.coding.net/用戶名/項目名.git git push -u origin master
  • 1
  • 2

這里寫圖片描述
這樣,我們本地已經存在的Android項目就已經和coding上我們創建的項目倉庫綁定了。

我們去檢查一下coding上有沒有我們的代碼
這里寫圖片描述
看來已經綁定成功了!


使用

讓我們來使用一下,首先我們使用Android studio打開我們的項目,然后我們會發現工具欄上會多出這些圖標,我用的Android studio3.1.2,不同的版本可能圖標形狀會不一樣,這個形狀是我最近升級后的新圖標。不過位置都在這里。

打開Android studio后,可能會提醒出現一個提醒框,大概意思是,是否新增的文件都自動add,這里推薦自動add。

原來的工具欄
這里寫圖片描述
現在的工具欄
這里寫圖片描述

  • 新建文件
    在studio上新建一個文件,如果在最開始都提示框選擇的是默認添加,那么新建的這個文件就會是綠色,否則就是紅色。
    這里寫圖片描述
    如果是紅色怎么辦呢,那么我們就要自己手動添加一下,方法如下:
    這里寫圖片描述

  • 提交文件
    有了Android studio的協助,提交文件變得十分簡單
    方式1:
    這里寫圖片描述
    方式2:
    這里寫圖片描述
    然后(剛剛提交A的時候忘保存截圖了,所有新建了個B文件)
    這里寫圖片描述
    這樣文件就保存了

  • 上傳文件
    其實到這里,本地的倉庫就OK了,那么我們現在需要將本地倉庫提交到遠程的coding上的倉庫中,如果覺得下圖找起來太麻煩,studio有提供快捷鍵,還是很方便的。
    這里寫圖片描述
    然后來到這里
    這里寫圖片描述
    點擊push,就可以將代碼上傳到遠程倉庫中啦!

現在我們去遠程倉庫中去看看是否上傳成功
這里寫圖片描述
看來已經完美上傳成功!

小提示

Android studio中的文件有4種顏色,分別是白、紅、綠、藍
這里寫圖片描述

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM