1、打開bash,進入工程根目錄(引用whaon的話:是和.classpath和.project同級的目錄)。PS:我的系統是win7,在bash切換到E的指令是 cd /e;
2、運作 git init 初始化代碼倉庫(repository)
3、運作git add .将該目錄下的所有檔案全部送出到緩沖區
4、運作git commit -m "helloword init"将代碼送出到HEAD,此時還沒有送出到伺服器
5、運作git remote add origin http://git.oschina.net/yourname/helloworld.git
6、git push origin master
其中第5和6步驟容易出現問題,lz就出現的問題和解決的方法列出
問題一:"NOT FOUND"
問題二:"![rejected] master -> master (fetch first)"
解決方法:看他的關鍵提示fetch first , 通過lz嘗試此問題順利解決
問題三:"![rejected] master -> master (non-fast-forward)
解決方法:還是同樣的提示,還是熟悉的味道自己看它的提示,哦,原來要我pull一下,好吧我就pull一下,結果說必須指定pull誰,最後通過嘗試終于把東東送出上去了。
修正:"git pull remote master" 改為 "git pull origin master"
本地分支的建立
本地分支的來源為執行git checkout -b <branch name> 的那個分支
例如現在有兩個分支,master和b1
master 分支下有一個commit:
commit1: add test1.c
b1分支下有兩個commit:
commit2: add test2.c
如果在master分支下checkout,即:
git checkout master //進入master分支
git checkout -b frommaster //以master為源建立分支frommaster
git log後發現frommaster中有一個送出:
這說明他是從master分支為源頭建立的
如果在b1分支下checkout,即:
git checkout b1 //進入master分支
git checkout -b fromb1 //以b1為源建立分支fromb1
git log後發現fromb1中已經有兩個送出:
這說明他是從b1分支為源頭建立的
遠端分支的建立
從遠端分支檢出的本地分支,稱為跟蹤分支(tracking branch)。跟蹤分支是一種和遠端
分支有直接聯系的本地分支。在跟蹤分支裡輸入git push,Git 會自行推斷應該向哪個服
務器的哪個分支推送資料。反過來,在這些分支裡運作git pull 會擷取所有遠端索引,并
把它們的資料都合并到本地分支中來.
$ git push ssh://[email protected]/rt4ls.git master // 把本地倉庫送出到遠端倉庫的master分支中
$ git remote add origin ssh://[email protected]/rt4ls.git
$ git push origin master
這兩個操作是等價的,第二個操作的第一行的意思是添加一個标記,讓origin指向ssh://[email protected] /rt4ls.git,也就是說你操 作origin的時候,實際上就是在操作ssh://[email protected]/rt4ls.git。origin在這裡完全可以了解為後者 的别名。
需要說明的是,預設情況下這條語句等價于送出本地的master倉庫到遠端倉庫,并作為遠端的master分支。
我從master分支建立了一個issue5560分支,做了一些修改後,使用git push origin master送出,但是顯示的結果卻是'Everything up-to-date',發生問題的原因是git push origin master 在沒有track遠端分支的本地分支中預設送出的master分支,因為master分支預設指向了origin master 分支,這裡要使用git push origin issue5560:master 就可以把issue5560推送到遠端的master分支了。
如果想把本地的某個分支test送出到遠端倉庫,并作為遠端倉庫的master分支,或者作為另外一個名叫test的分支,那麼可以這麼做。
$ git push origin test:master // 送出本地test分支作為遠端的master分支
$ git push origin test:test // 送出本地test分支作為遠端的test分支
如果想删除遠端的分支呢?類似于上面,如果:左邊的分支為空,那麼将删除:右邊的遠端的分支。
$ git push origin :test // 剛送出到遠端的test将被删除,但是本地還會儲存的,不用擔心
首先從遠端代碼倉庫中克隆一份代碼, 直接用git clone remote_repository,
假設遠端代碼倉庫有2個分支, master和test分支, 預設是master分支, git clone會克隆遠端的所有分支到本地(可以用git branch -r檢視遠端的所有分支). 然後checkout 到預設的一個分支上, 這裡預設的分支是master
clone代碼以後, 可以切換到遠端的test分支, 使用
git checkout origin/test, 這時候目前git目錄處于 'detached HEAD' state, 此時需要用git checkout -b new_branch建一個新的分支(從test分支為起點建), 然後就可以在new_branch分支上修改代碼了, 比如我們加一個檔案, test,.c, 然後 git add test.c, 然後git commit -a -s 以後就能像test分支送出代碼了
git push origin HEAD:refs/for/test (git push origin HEAD:test)
ps:
在new_branch更新upstream上遊的代碼, 可用git pull origin test
git 本地會有一個master, 對應遠端的master, 如果遠端有一個alpha1.0分支, 本地也會有一個和遠端alpha1.0對應的本地分支, 操作和master一樣
關于如何在多個分支直接送出代碼
比如, 有2個分支, master和alpha, 在master上送出代碼以後, 得到一個本次送出的commit id, 如果想要将本次送出再送出一份到alpha, 可以先git checkout alpha,然後使用git cherry-pick commit-id, 再git push origin alpha即可
技術改變世界!
--狂詩絕劍