轉(zhuǎn)自:http://blog.csdn.net/mylizhimin/article/details/53415686
首先準備工作git客戶端和as客戶端是不可少的工具,本次使用的是as2.2.2和git2.10.2欠气;
git:https://git-scm.com/downloads
下載安裝后在as里面關(guān)聯(lián)上,點test可以測試一下,彈出版本就說明關(guān)聯(lián)成功
下面我分享三種操作方式,以界面交互為主恋日,git命令為輔。
首先說明一點嘹狞,github算是git服務器的一種岂膳,另外還有很多可能會使用到的git服務器,比如常用的GitLab磅网,或者csdn的代碼托管服務等等谈截,都是大同小異。這里以github為例涧偷,但是as里面是可以直接share 到github簸喂,其他地方貌似不可以直接share,參見第三種方法燎潮;前兩種是都可以通用的喻鳄。
1确封、首先我們創(chuàng)建一個測試項目GitTest诽表,點擊VCS--Enable Version Control
Integration,在彈出框右邊選上Git隅肥。這個時候會發(fā)現(xiàn)項目會發(fā)生幾點變化,鼠標右鍵點擊項目出現(xiàn)Git選項竿奏;項目文件顏色變?yōu)榧t色;在as右下角出現(xiàn)Git:master腥放;如下圖:
圖1-1
圖1-2
圖1-3
2泛啸、在github上創(chuàng)建遠程代碼倉庫GitTest,注意這里名字可以和項目名字不一樣秃症;登錄github候址,進到個人主頁吕粹,點擊切換到Repositories,然后點new創(chuàng)建岗仑∑ジ可以寫上描述,選擇公開或私有荠雕,也可以選擇為項目添加一個README說明文件稳其,如下圖:
圖2-1
圖2-1
3、切回as炸卑,那么在提交項目之前要做一件很重要的事情既鞠,就是配置好gitignore文件,我們將項目展開會發(fā)現(xiàn)as已經(jīng)幫我們生成了gitignore文件盖文,在項目根目錄有一個嘱蛋,在app目錄也有一個;那么在app
模塊里面很簡單只有一行/build五续,這個我們不用管洒敏,那么在項目根目錄的gitignore文件里面的內(nèi)容我們可以看一下
圖3-1
切換到project模式下我們會發(fā)現(xiàn),項目中的文件并不是都變紅了疙驾,有的是白色的凶伙,那么這些沒有變紅的文件就是被這個gitignore文件忽略掉的,那么我們關(guān)心的是哪些文件應該被忽略掉哪些文件不應該忽略荆萤?是as能在編譯過程中自動生成的文件都不應該提交上去镊靴;也就是說我傳上去的代碼,別人拉取下來通過as編譯能夠正常跑起來链韭,并且這個時候本地不產(chǎn)生可以提交的文件偏竟;這些文件主要包括.idea、.gradle敞峭、iml文件踊谋、以及配置sdk路徑的local.properties等等,as為我們自動生成并不是很全面旋讹,這里推薦一個github上列出來的https://github.com/github/gitignore/blob/master/Android.gitignore我們也可以使用這個殖蚕。這個文件之前是把整個.idea文件夾都忽略的,后來又改成只忽略其中部分文件沉迹,不知道為什么睦疫,我認為只要是可以自動生成的就可以忽略,即時每個人生成的都一樣鞭呕。
4蛤育、準備好了之后下面開始提交代碼了,在項目根目錄上右鍵Git-->Add將代碼添加到索引庫,然后Git-->Commit Directory提交到本地倉庫瓦糕;到此為止我們依然沒有和github聯(lián)系上底洗;
5、將代碼push到遠程倉庫Git-->Repository-->push到遠程倉庫咕娄,在彈出框里面輸入之前創(chuàng)建的git遠程倉庫地址https://github.com/AndSync/GitTest.git亥揖,點OK,如果沒登錄會提示登錄圣勒,以前登錄過就不提示了费变,完了之后點push。
圖5-1
這時候在右上角會有一個提示push rejected
灾而,原因是我們本地倉庫的master主線并沒有和遠程倉庫的master主線綁定上胡控,那么首先Git->Repository-->fetch一下扳剿,獲取到遠程master分支旁趟,這時候發(fā)現(xiàn)右下角有變化了,顯示出來了origin/master,
圖5-2
然后我們需要通過命令來完成綁定庇绽,在Terminal里面可以輸入命令锡搜,這段命令怎么來的,其實如果你不用as可視化工具 而是用命令去 git push 的話是會提示給你的瞧掺,告訴你應該輸什么命令耕餐,git還是很智能的,建議還是多用命令來操作辟狈。
git branch --set-upstream-to origin/master
然后我們再去push 這時候可以了肠缔,會彈出一個merge提示框,我們點merge又報錯了哼转,哦是不是因為創(chuàng)建項目的時候有一個文件README明未,那我們pull一下看行不行,發(fā)現(xiàn)也報錯壹蔓,于是我們要祭出另一句git命令來解決這個問題
圖5-3
git pull --allow-unrelated-histories
允許拉取不相關(guān)的歷史記錄趟妥,把README拉取過來了,當然如果你創(chuàng)建項目的時候沒有創(chuàng)建README可能沒這么麻煩佣蓉,這時再去push就OK了披摄。整個過程到此結(jié)束
方法二:先創(chuàng)建連接,后創(chuàng)建項目
這個怎么玩的呢勇凭,簡要說明一下疚膊,之前不是有安裝git客戶端,應該在任何地方鼠標右鍵都有一個菜單Git Gui here -->Clone Existing Repository
注意本地路徑文件夾GitTest2事先不要創(chuàng)建
clone完了之后虾标,在這個目錄下會有一個.git文件夾寓盗,和readme文件,那么到這一步我們也可以發(fā)現(xiàn)這種方式貌似并不適用于新建項目,因為這個文件夾里面有文件as將無法在這個目錄下創(chuàng)建文件贞让,那么這適用于從別的地方考過來一個已有的項目放到這里周崭,之后從as打開項目進行add、commit喳张、push等操作即可续镇。
很簡單,無需先在github上創(chuàng)建項目销部,直接share摸航,如果需要修改gitignore文件可以先修改下。
1舅桩、VCS-->import into Version Vontrol-->Share Progect on Github
2酱虎、登錄帳號
3擂涛、填寫信息
1.error:src refspec master does not match any
引起該錯誤的原因是读串,目錄中沒有文件,空目錄是不能提交上去的
解決方法
touch README
git add README
git commit -m 'first commit'
git push origin master
2.fatal: remote origin already exists.
1撒妈、先刪除遠程git倉庫
$ git remote rm origin
2恢暖、再添加遠程 Git 倉庫
$? git remote add origin git@github.com:FBing/Java-code-generator
如果執(zhí)行 git remote rm origin 報錯的話,我們可以手動修改gitconfig文件的內(nèi)容
$ vi .git/config? ? ? ? ? ? 把 [remote “origin”] 那一行刪掉就好了狰右。