標籤: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
註: 這個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
其運行結果如下:
- 在使用git clone命令時,加上–recurse-submodules或–recursive 這樣的遞迴參數
git clone --recursive projectA.git
其運行結果如下:
四、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,也在coding上註冊了帳號。
那我們點擊coding上的建立項目
輸入好項目名稱,然後添加項目描述,在選擇私人項目和公開項目的時候注意下,如果不是銀牌會員以上,在coding上只能建立5個私人項目,當然,你也可以不花錢,升級成銀牌會員,然後就可以有10個私人倉庫了。不過公開項目倒是可以無限建立。
所有都輸入完畢後,我們點擊建立項目,之後會來到以下介面
初始化本地倉庫
現在我們電腦上已經有一個Android studio項目了,我們要怎樣將電腦本地的項目上傳到已經準備好到代碼託管庫中呢
首先我們通過cmd中的cd命令進入到我們的項目中,使用如下命令將我們本地的項目變成有git倉庫的項目
git init
使用完該命令後,本地項目會多出一些檔案
其實使用了git init命令後,本地已經是一個git倉庫的狀態了,已經可以正常使用git了,所以我們使用以下命令,將當前所有的代碼都添加到本地倉庫中
git add *
然後做一次提交操作,將代碼都提交到倉庫中
git commit -m "首次提交"
現在,我們將本地倉庫和coding上到倉庫做一個綁定處理
其實怎麼綁定,在coding上建立項目的時候,coding都告訴我們了
我們只需要順序使用這兩行命令就搞定了
git remote add origin https://git.coding.net/使用者名稱/項目名.gitgit push -u origin master
這樣,我們本地已經存在的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 添加外部項目地址