亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

關(guān)于使用 git 合作開(kāi)發(fā)時(shí)的通用操作

wayneli / 3279人閱讀

摘要:通常我們工作時(shí)是這樣操作說(shuō)一下使用做版本控制的時(shí)候的工作流程需要添加到版本庫(kù)中的文件就代表著所有文件除開(kāi)了忽略掉的文件本次提交的備注將遠(yuǎn)程的庫(kù)和本地的庫(kù)版本同步一下因?yàn)檫h(yuǎn)程庫(kù)可能發(fā)生了修改多人合作開(kāi)發(fā)時(shí)這樣操作的前提是本地遠(yuǎn)程都是同一

通常我們工作時(shí)是這樣操作

說(shuō)一下使用 git 做版本控制的時(shí)候的工作流程

git add -A           #需要添加到版本庫(kù)中的文件 -A 就代表著所有文件(除開(kāi)了 .gitignore忽略掉的文件)
git commit -m "本次提交的備注"
git pull            #將遠(yuǎn)程的庫(kù)和本地的庫(kù)版本同步一下,因?yàn)檫h(yuǎn)程庫(kù)可能發(fā)生了修改(多人合作開(kāi)發(fā)時(shí))
git push          

這樣操作的前提是本地遠(yuǎn)程都是同一個(gè) master 分支上

最可能會(huì)碰到的問(wèn)題

以上操作前兩步通常不會(huì)碰到問(wèn)題,最容易發(fā)生問(wèn)題的是 git pull 這一步
因?yàn)槎嗳碎_(kāi)發(fā)時(shí)難免碰到同時(shí)修改了同一個(gè)文件,那么就會(huì)產(chǎn)生沖突
git 是根據(jù)文件每行發(fā)生的修改進(jìn)行的判定的,如果同時(shí)對(duì)同一文件的同一行發(fā)生了修改,就卡死到這一步上了

怎么解決這個(gè)問(wèn)題

我常用的是命令行和 phpstrom 中的版本控制工具,最推薦的是命令行操作,別的圖形界面也是調(diào)的命令行接口
直接學(xué)會(huì)git 的命令是學(xué)習(xí)成本最低的一種方式,一次學(xué)會(huì)到處可用啊!

命令行還有個(gè)強(qiáng)大的地方就是它的提示通常就是你解決問(wèn)題的方法,照著提示打就行(要善用提示啊,別看見(jiàn)報(bào)錯(cuò)就慌了)

我們做一個(gè)實(shí)驗(yàn),我自己的一個(gè)版本庫(kù)本地和遠(yuǎn)程同時(shí)發(fā)生了修改,而且是操作的同一個(gè)文件,
我直接進(jìn)行 git push操作


看到提示沒(méi)?提示中的 hint 中說(shuō)了,向遠(yuǎn)程庫(kù)中更新被拒,因?yàn)檫h(yuǎn)程有了修改而本地沒(méi)有(說(shuō)白了就是沒(méi)同步),
這通常發(fā)生在另一個(gè)版本庫(kù)向遠(yuǎn)程推送了相同的文件(就是兩個(gè)人在這個(gè)版本下同時(shí)操作了同一個(gè)文件),
提示中給出原因之后緊接著給出了解決辦法(e.g., "git pull ...")before pushing again,

我們按著它給的提示操作一下

通常如果兩個(gè)人之間的操作不發(fā)生沖突比如同時(shí)修改了同一個(gè)文件的同一行的情況下就會(huì)進(jìn)入commit
編輯界面了,但是我給他人為的造成一個(gè)錯(cuò)誤,這個(gè)錯(cuò)誤就是我們最常碰到的錯(cuò)誤,合并沖突
看到提示中的最后一行了沒(méi)有?
Automatic merge failed; fix conflicts and then commit the result.
自動(dòng)合并失敗了,請(qǐng)修復(fù)沖突并再次提交

如果文件很多我怎么去找到它?

一種是靠界面工具主動(dòng)把錯(cuò)誤推到你面前

另一種就是自己去找了

第一種方法坑爹的地方就是好多工具他給你提示就提示一次,你如果給關(guān)了就不會(huì)再提示了,但是該提交不上去的
還是提交不上去,而且如果是線上火速修復(fù)的時(shí)候你的編輯器是幫不到那么遠(yuǎn)的
我們選第二種,肯定不是挨個(gè)文件去翻啊!會(huì)死人的

有一個(gè)很有用的命令

git status


標(biāo)紅的文件都給你了,而且還給你了需要執(zhí)行的命令,你別假裝看不到啊!
當(dāng)然這個(gè)時(shí)候直接git add && git commit會(huì)出事的,你還沒(méi)解決沖突呢!
我們?nèi)ミ@個(gè)沖突文件中解決掉沖突本地能跑通了再提交,而且這個(gè)錯(cuò)誤提示會(huì)指名文件路徑的,我這個(gè)沖突文件
因?yàn)檎檬窃陧?xiàng)目的根目錄下才沒(méi)有的

打開(kāi)這個(gè)文件我們看到如下的內(nèi)容:

我這是在 phpstrom 中打開(kāi)的文件,如果phpstrom 能讀取到你項(xiàng)目中的 .git/ 目錄是可以進(jìn)行版本控制的
這里phpstrom 就幫你把沖突文件標(biāo)紅了,多么醒目~當(dāng)然這也是我們自己找的
如果文件內(nèi)容特別多但是就一兩處沖突時(shí)我們直接搜索關(guān)鍵詞 HEAD或者<<<<<<<就行,你懂的...
被尖角號(hào)擴(kuò)起來(lái)的就是沖突的地方,接下來(lái)就是保孩子還是保大人解決沖突的時(shí)候了,找到誰(shuí)和你改的同一處代碼

什么?你說(shuō)你找不到是誰(shuí)?你沒(méi)看到代碼沖突塊下的 779833d952d8a6557b2e8eba3bd192ede5cb6ca0
這一段文字嗎?你先別激動(dòng),這個(gè)點(diǎn)還不適合開(kāi)車,這個(gè)是提交的 commit-id,你每次提交都會(huì)產(chǎn)生的一個(gè)標(biāo)識(shí)
要查看這到底是誰(shuí)和我的代碼沖突了就執(zhí)行下面的命令

git log 779833d952d8a6557b2e8eba3bd192ede5cb6ca0

第一行就是你要的結(jié)果,
如果直接git log -p 就是列出所有的提交記錄 -p 就是顯示出修改的地方

沖突塊部分 HEAD就是你寫的代碼,下面的是別人寫的,去掉其中一個(gè)把那些標(biāo)簽清理干凈,測(cè)試一下沒(méi)問(wèn)題了
git add && git commit && git pull && git push 這四連技好了,世界清凈了

這合并的時(shí)候發(fā)生了什么?

這是我在 segmentfault 中給出的答案:

比如你從一個(gè)git log為1,2,3,4,5,6的遠(yuǎn)程庫(kù)拉取到了本地,
另一個(gè)同事也拉取了同樣的代碼,而且你的同事先于你提交到遠(yuǎn)程了,
此時(shí)遠(yuǎn)程的版本是1,2,3,4,5,6,7_new,8_new,
而你當(dāng)前只是本地的版本1,2,3,4,5,6,7_local,8_local,9_local
從這里你就能看出你前一部分和遠(yuǎn)程的一樣,后一部分和遠(yuǎn)程的不一樣,
這個(gè)時(shí)候你不能正常推送上去的,如果你采取git push origin master --force
那么遠(yuǎn)程的版本就變成了1,2,3,4,5,6,7_local,8_local,9_local
之前你同事推送的7_new,8_new這兩次推送被覆蓋了,這不是大家想要的情況
因此需要git pull來(lái)將本地的版本合并成樣
1,2,3,4,5,6,7_new,7_local,8_local,8_new,9_local,10_commit_merge
遠(yuǎn)程和本地的排序是按當(dāng)時(shí) commit 的時(shí)間來(lái)排的,最后一個(gè)10_commit_merge就是你本地遠(yuǎn)程合并的標(biāo)志,最后你推送到遠(yuǎn)程倉(cāng)庫(kù)的應(yīng)該也是這個(gè),
因?yàn)槟銈儾僮鞯氖峭粋€(gè)庫(kù)始終要保持代碼的同步,所以一旦版本庫(kù)發(fā)生改動(dòng)同一分支下的所有人都要跟著去同步他,因?yàn)楦鏖_(kāi)發(fā)各的直接往上推 git 還沒(méi)智能到幫你處理沖突的地步

如果只想合并分支里的幾個(gè)文件怎么辦?

比如我有兩個(gè)分支

* alpha
  dev

我只要 dev 中的某幾個(gè)文件, 比如 README.md 和 LICENSE.md, 那么我就

git checkout dev /path/to/README.md /path/to/LICENSE.md

就會(huì)拉取 dev 分支中的這幾個(gè)文件覆蓋到 alpha 分支上, 注意拉取的文件會(huì)強(qiáng)制覆蓋, 然后你 git diff 一下這幾個(gè)文件看有沒(méi)有問(wèn)題, 直接git commit && git pull && git push 一套帶走就行

答案鏈接
博客原文

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/23061.html

相關(guān)文章

  • 團(tuán)隊(duì)合作必備的Git操作

    編輯器&Mac 1、編輯器的使用vs code 插件 git輔助工具,可查看代碼的書寫者:Git Blame 2、 Mac工具使用 強(qiáng)大終端 item2 3、在 macOS 中完美配置文件名大小寫敏感(解決git默認(rèn)對(duì)大小寫不敏感問(wèn)題)解決git大小寫不敏感 知識(shí)篇 一、git使用 一般企業(yè)中使用代碼管理工具Git開(kāi)發(fā)時(shí)都是通過(guò)拉分支進(jìn)行功能細(xì)致開(kāi)發(fā),所以掌握git的分支操作時(shí)必要的 使用...

    tinyq 評(píng)論0 收藏0
  • 團(tuán)隊(duì)合作必備的Git操作

    編輯器&Mac 1、編輯器的使用vs code 插件 git輔助工具,可查看代碼的書寫者:Git Blame 2、 Mac工具使用 強(qiáng)大終端 item2 3、在 macOS 中完美配置文件名大小寫敏感(解決git默認(rèn)對(duì)大小寫不敏感問(wèn)題)解決git大小寫不敏感 知識(shí)篇 一、git使用 一般企業(yè)中使用代碼管理工具Git開(kāi)發(fā)時(shí)都是通過(guò)拉分支進(jìn)行功能細(xì)致開(kāi)發(fā),所以掌握git的分支操作時(shí)必要的 使用...

    ymyang 評(píng)論0 收藏0
  • Python和FFmpeg強(qiáng)強(qiáng)聯(lián)合

    摘要:核心子進(jìn)程運(yùn)行控制。由應(yīng)用來(lái)看,關(guān)鍵是錄制屏幕和錄制攝像頭,以及用快捷鍵控制在這兩者之間切換。限制條件是超過(guò)三個(gè)月快捷鍵失效。實(shí)現(xiàn)分兩步安裝時(shí)在注冊(cè)表特定位置,假如是,寫入目錄相關(guān)信息。在程序運(yùn)行時(shí),檢測(cè)當(dāng)前目錄是否存在于注冊(cè)表下。 錄制項(xiàng)目終于做完,不用總是提醒自己抓緊時(shí)間這樣來(lái)想問(wèn)題了。在完成之后帶著一些滿足感,回頭看看哪些地方是需要改進(jìn)的,哪些地方又是有更好的替代方案,自己又有哪...

    ThreeWords 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<