git 添加外部項目地址

來源:互聯網
上載者:User

標籤:use   直接   term   切換   dmi   rto   asm   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 "[email protected]",在本地建立公開金鑰。(email地址改成自己的github郵箱地址)--把C:\Users\Administrator\.ssh中,id_rsa.pub公開金鑰中的內容添加到github。(titile隨便寫)      --git remote add origin [email protected]: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 [email protected]: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 projectAgit submodule add projectB.git projectB
  • 1
  • 2
  • 3

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

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

 



 

 

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

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

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

  • 正常的使用git clone命令,然後再使用 git submodule init 和git submodule update來擷取子模組
git clone projectA.gitcd projectAgit submodule initgit submodule update
  • 1
  • 2
  • 3
  • 4

其運行結果如下:

 



 

 

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

其運行結果如下:

 



 

 

四、tortoisegit操作submodule

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

 



 

 

添加子模組的介面大概就是下面這個樣子:

 



 

 

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

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

 



 

 

五、忽略submodule中的修改或新增檔案

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

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

 



 

 

這並不是我們想要的結果。一開始的時候我的想法是使用 .gitignore 來忽略submodule的修改,但是無法做到,後來經過一番搜尋,終於找到瞭解決良藥。在添加了submodule之後,project的目錄下回產生一個.gitmodules檔案,這個檔案記錄了子模組的路徑和倉庫地址等資訊,如所示:



 

 

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

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

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

添加ignore子項之後的.gitmodules檔案的內容如下所示:

 



 

 

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

 



 

 

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

如何將Android studio中的項目匯入到第三方的git託管庫中著作權聲明:本文為博主原創文章,轉載留下原文連結。 80430761 準備工具
  • git
    我們需要在git官網下載最新的git工具,並且將其配置到環境變數中

  • 第三方代碼託管的網站
    如GitHub,coding,碼雲等
    本篇文章我將以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/使用者名稱/項目名.gitgit 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種顏色,分別是白、紅、綠、藍

 

git 添加外部項目地址

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.