首先記錄兩個小問題
git push沒有權(quán)限
4月 git安裝配置虾宇,根據(jù)廖雪峰老師的教程
5月 安裝了ionic旨剥,順帶安裝其帶的git,其自動配置臭墨。
6月 git不能用,沒有權(quán)限
LF will be replaced by CRLF
CRLF : Carriage-Return Line-Feed 回車換行吞加。即回車(CR,ASCII 13, \r)換行(LF, ASCII 10, \n).
在windows中使用回車換行標(biāo)識一行的結(jié)束裙犹,而Linux中則只有換行符尽狠。
這個警告的解決方案就是,禁用git自動轉(zhuǎn)換叶圃。
git config --global core.autocrlf false //禁用自動轉(zhuǎn)換
如果已經(jīng)創(chuàng)建了git 需要刪除.git 然后重新配置
開始team work 流程及之間遇到的問題
團(tuán)隊(duì)協(xié)作的方案選擇
1. 團(tuán)隊(duì)成員clone我的遠(yuǎn)程庫袄膏,在本地開發(fā),同步到自己的遠(yuǎn)程庫掺冠,然后發(fā)起pull request
這種方式不應(yīng)該是團(tuán)隊(duì)項(xiàng)目所應(yīng)該采取的做法沉馆,這種做法應(yīng)該是參與開源項(xiàng)目編輯所采取的做法,clone已經(jīng)存在的項(xiàng)目德崭,然后進(jìn)行完善之后發(fā)起請求斥黑,看項(xiàng)目組是不是接受你的代碼。
2. 在我的遠(yuǎn)程庫的設(shè)置中眉厨,添加協(xié)作者collaborators
只需要搜索到這個用戶就可以向他發(fā)送請求锌奴,成為協(xié)作者就可以在遠(yuǎn)程pull倉庫,本地開發(fā)之后push到遠(yuǎn)程庫上憾股。完成團(tuán)隊(duì)協(xié)作開發(fā)
團(tuán)隊(duì)成員的操作步驟
1. 在本地適當(dāng)位置建立文件夾鹿蜀,運(yùn)行git init
命令來建立一個本地倉庫
2. 添加與遠(yuǎn)程倉庫的關(guān)聯(lián)
git remote add origin git@github.com:SunLightFor6/admin.git
完成之后可以使用命令
git remote -v
來查看一下遠(yuǎn)程倉庫的信息
到這里和遠(yuǎn)程倉庫已經(jīng)建立好關(guān)系,push你的代碼就可以了服球。
3. push你的代碼
本地倉庫所在文件夾的目錄茴恰,設(shè)置好.gitignore
文件之后,進(jìn)行stage, add, commit操作斩熊,這些操作可以使用Git GUI來完成往枣。然后push到遠(yuǎn)程倉庫
git push -u origin master
等待push成功,就完成了項(xiàng)目項(xiàng)目協(xié)作的入門操作粉渠。
第3步常出現(xiàn)的幾個問題
stage文件的時候出現(xiàn)警告
LF will be replaced by CRLF
解決方案見本文第二點(diǎn)
push代碼的時候失敗分冈,被遠(yuǎn)程倉庫拒絕(rejected)
$ git push -u origin master
To github.com:SunLightFor6/admin.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:SunLightFor6/admin.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
這個問題出現(xiàn)的原因是:由于遠(yuǎn)程倉庫的內(nèi)容相較本地倉庫最近一次pull的內(nèi)容有了更新,所以需要你先從遠(yuǎn)程倉庫pull下來最新的文件渣叛,然后再上傳丈秩。
解決:執(zhí)行命令 git pull
你可能會問,沖突怎么辦淳衙?
在正常且科學(xué)合理的團(tuán)隊(duì)協(xié)作的過程中蘑秽,一般不會出現(xiàn)多少沖突,這需要隊(duì)友之間互相溝通好箫攀,協(xié)作好肠牲,每個人分工明確,接口定義清楚靴跛,互相耦合度低缀雳,這樣就能很大程度上避免沖突了。但沖突肯定會出現(xiàn)梢睛,比如隊(duì)友幾個同時在readme文件中新增了東西肥印。那么如果真的出現(xiàn)沖突了怎么辦识椰?
出現(xiàn)沖突git會提示你哪個文件哪個地方出現(xiàn)沖突,這就需要你手動處理沖突的文件深碱。
git pull 的時候出現(xiàn)問題
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
這個問題意思是git不知道你要pull的是哪一個分支腹鹉。提供了兩種解決思路:
- 第一種git pull <remote> <branch> 寫清楚遠(yuǎn)程分支
- 第二種git branch --set-upstream-to=origin/<branch> master 遠(yuǎn)程分支和本地分支做綁定
$ git branch --set-upstream-to=origin/master master
Branch 'master' set up to track remote branch 'master' from 'origin'.
fatal: refusing to merge unrelated histories
這個問題很有意思,是說因?yàn)楸镜貛旌瓦h(yuǎn)程庫的內(nèi)容歷史沒有關(guān)聯(lián)(unrelated)敷硅,所以拒絕合并(refuse to merge)功咒。一般出現(xiàn)在開始階段的pull和push的時候。
$ git pull origin master --allow-unrelated-histories
配置好就可以啦
團(tuán)隊(duì)協(xié)作者的操作流程
上邊介紹了團(tuán)隊(duì)協(xié)作者開始團(tuán)隊(duì)協(xié)作的時候的操作流程和會遇到的問題绞蹦,以下歸納一下日常開發(fā)的操作流程力奋。
- 每天開發(fā)第一件事 pull遠(yuǎn)程倉庫,確保本地倉庫內(nèi)容最新幽七。
- 開始開發(fā)過程
- commit 因?yàn)閏ommit是帶有message信息的景殷,所以每進(jìn)行完一項(xiàng)內(nèi)容更新,最好就進(jìn)行一次commit
- 每日工作結(jié)束锉走,push自己今天所有的commit到遠(yuǎn)程倉庫滨彻,如果遇到問題藕届,參照上面內(nèi)容解決挪蹭。
Attention. 本文沒有介紹分支branch的相關(guān)內(nèi)容,如果要在團(tuán)隊(duì)協(xié)作中引入分支(git鼓勵大量使用分支)休偶,則只需要創(chuàng)建分支梁厉,然后在分支上pull和push代碼,里程碑時候merge合并分支到主分支master踏兜。