git命令行使用指南

文章基于Mac版本的git操作.


關(guān)于 git.

  • 之前一直使用SVN, 開(kāi)發(fā)個(gè)人項(xiàng)目時(shí)會(huì)使用GitHub Desktop, 筆者基于這一年里的git使用體會(huì)為有需要的同學(xué)們提供一些建議.
  • 對(duì)筆者而言, SVN更像是一個(gè)文件共享工具, 整個(gè)團(tuán)隊(duì), 包括產(chǎn)品原型, UI切圖和代碼等等的共享工具. git更適合于單純代碼方面的管理, 包括個(gè)人的代碼開(kāi)發(fā)管理和幾個(gè)人之間的團(tuán)隊(duì)協(xié)作.
  • git工具的使用很簡(jiǎn)單, 因?yàn)槠匠i_(kāi)發(fā)用得上的語(yǔ)法很少, 不過(guò)對(duì)于完全不了解的同學(xué), 初次使用還是會(huì)覺(jué)得很陌生.

  • 首先git工具是用來(lái)做代碼管理和協(xié)作開(kāi)發(fā)的. 你可以把你的開(kāi)發(fā)代碼放到遠(yuǎn)程的GitHub倉(cāng)庫(kù)里(GitHub的私有倉(cāng)庫(kù)是需要付費(fèi)的, 相對(duì)的公開(kāi)倉(cāng)庫(kù)則免費(fèi), 如果你不介意把代碼共享給大家). 每次到了一定的開(kāi)發(fā)階段就把自己的新代碼提交到遠(yuǎn)端的倉(cāng)庫(kù)(比如做一天的開(kāi)發(fā)任務(wù)之后提交, 又比如做一段有影響的代碼之前提交, 這個(gè)就看個(gè)人的判斷了). 這個(gè)功能點(diǎn)上可以理解成云儲(chǔ)存功能.
  • git可以建立許多的分支, 每個(gè)分支下開(kāi)發(fā)不同的功能, 或者是不同的人開(kāi)發(fā)不同的分支. 不同的分支之間可以靈活切換, 合并. 分支也可以打上tag(標(biāo)簽)或者回滾, 總之我目前需要的功能他都有了. 這個(gè)功能點(diǎn)上其實(shí)和SVN是類似的.

關(guān)于日常 git 使用.

  • 使用git前需要在本地初始化git, 即git init. 然后需要設(shè)置與GitHub倉(cāng)庫(kù)的連接, 有HTTPS和SSL兩種方式, 這方面請(qǐng)參考其他文章.
  • 1 假設(shè)已經(jīng)存著遠(yuǎn)端倉(cāng)庫(kù),打開(kāi)終端terminal使用clone命令拉取遠(yuǎn)端倉(cāng)庫(kù). 輸入下方命令, 按照提示輸入密碼, 選擇文件夾等. HTTPS 和 SSH 地址在GitHub 項(xiàng)目里面的綠色 Clone or download 按鈕.
    git clone 項(xiàng)目地址(可以使用 HTTPS 或者 SSH 連接方式)
  • 2 接下來(lái)是主要講的日常操作. 當(dāng)你完成了一個(gè)功能或者一天的工作需要提交的時(shí)候. 打開(kāi) terminal, 進(jìn)入項(xiàng)目文件夾并輸入下面的命令.
    git add . //把所有修改的文件加入追蹤庫(kù),當(dāng)然你也可以單獨(dú)選擇部分文件
    git commit -m "注釋" //提交到本地并注釋
    git push origin issue1 //提交到遠(yuǎn)端, issue1 是遠(yuǎn)端分支名
    這三句可能是日常中用到的最多的語(yǔ)句, 添加 - 提交.
  • 3 如果你在不同的分支開(kāi)發(fā), 或者合并其他的分支時(shí),就需要切換分支. 例如從 issue1分支切換到 issue2 分支.
    git checkout issue2 //切換到 issue2 分支
  • 4 如果多人開(kāi)發(fā), 需要合并他人的分支的時(shí)候(比如我本地的 issue2 需要合并遠(yuǎn)端的 issue3 ). 我的做法是先新建一個(gè)和遠(yuǎn)端需要合并的分支名字相同的分支(這個(gè)新建的分支是以本地的 issue2 為基礎(chǔ)新建的, 所以合并前是和 issue2 一模一樣的, 相當(dāng)于復(fù)制了 issue2), 然后拉取遠(yuǎn)端分支和新建的分支合并, 解決完沖突之后再合并到本地分支當(dāng)中.
    git branch -a //查看所以的分支, 包括本地分支和遠(yuǎn)端分支
    git checkout branch -b issue3 //以當(dāng)前分支為基礎(chǔ)新建名為 issue3 的分支并切換到 issue3, 這里是以 issue2 為基礎(chǔ)新建 issue3
    git pull origin issue3 //拉取遠(yuǎn)端的 issue3 分支和本地的 issue3 分支進(jìn)行合并, 這時(shí)可能會(huì)提示有沖突, 有沖突時(shí)需要解決沖突
    git add . //解決完 issue3 的沖突之后再提交到本地
    git commit -m "注釋" //需要先 commit 之后才可以切換分支
    git checkout issue2 //切換到 issue2 分支
    git merge issue3 // 把解決完沖突的 issue3 分支合并到當(dāng)前分支 issue2
    這時(shí)候的 issue2 就已經(jīng)是合并完線上的最新的代碼了, 接下來(lái)在按照正常的程序 push 上去就行了. 合并時(shí)也可以先 fetch 再 merge , 就是先把遠(yuǎn)端的拉下來(lái)不合并, 再通過(guò) merge 命令進(jìn)行合并. 上邊的 pull 其實(shí)是 fetch 和 merge 的集合, 拉取遠(yuǎn)端并直接合并.

關(guān)于協(xié)同開(kāi)發(fā).
協(xié)同開(kāi)發(fā)最難的是代碼庫(kù)的管理和代碼的合并. 我通常是這么做的:

  • master 分支, master 分支是主分支, 每個(gè)上線版本都會(huì)合并到 master 分支上, 并打上 tag. master 分支僅由負(fù)責(zé)人進(jìn)行管理.
  • develop 分支, 由 master 分支切出來(lái)的 develop 分支是開(kāi)發(fā)的主分支, 每個(gè)開(kāi)發(fā)人員完成自己的任務(wù)之后都會(huì)拉取 develop 分支進(jìn)行合并, 解決沖突之后再提交到 develop 分支上.
  • 個(gè)人分支, 比如我叫 ken, 我就從 develop 分支上切出一個(gè)名為 ken 的分支作為我個(gè)人的主分支.
  • issue分支, 用來(lái)管理單獨(dú)的功能代碼, 一般采用 issueX 的命名, issue 和 GitHub 庫(kù)的 issue 對(duì)應(yīng). 比如我需要 code 網(wǎng)絡(luò)層的代碼, 我就在 GitHub 倉(cāng)庫(kù)建立一個(gè) issue4, 然后本地以 ken 分支為基礎(chǔ)建立一個(gè) issue4 分支.

我的習(xí)慣是會(huì)頻繁的更新個(gè)人分支, 在 issue 分支的小階段完成后或者大改之前會(huì)把 issue 分支合并到 ken 分支. 等 issue 穩(wěn)定之后會(huì)合并到 ken 分支,再合并到 develop 分支. 以此保證每個(gè)功能, 每個(gè)開(kāi)發(fā)人員代碼的獨(dú)立, 以及 develop 分支的穩(wěn)定.

還有一點(diǎn)就是每個(gè)人盡量只改動(dòng)自己的部分, 需要修改其他人的部分之前如果有可能最好先溝通, 特別是 xib 以及 storyboard. 這樣可以減少90%以上的沖突, 特別是難以用沖突工具解決的沖突.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 多種多樣的工作流使得在項(xiàng)目中實(shí)施Git時(shí)變得難以選擇。這份教程提供了一個(gè)出發(fā)點(diǎn),調(diào)查企業(yè)團(tuán)隊(duì)最常見(jiàn)的Git工作流。...
    JSErik閱讀 4,609評(píng)論 2 8
  • 銀龍 2011.10.21 是非成敗皆成空, 萬(wàn)悲俱來(lái)又何從? 我持青云無(wú)敵劍, 直搗黃龍上九重! —end—
    醉仙王子閱讀 122評(píng)論 0 0
  • 曾經(jīng)以為,二十幾歲之前的日子是那樣漫長(zhǎng),長(zhǎng)大成人似乎是一件遙不可及的事情。一路走來(lái)才明白,人生中經(jīng)歷過(guò)無(wú)數(shù)的瞬間里...
    西川紫閱讀 991評(píng)論 2 8
  • 人都想把自己保護(hù)的很好,怕被欺騙,怕受傷害,怕吃大虧,所以人小心翼翼,表里不一,社交上裹了一層殼,說(shuō)話開(kāi)始言不由衷...
    兩朵告別我閱讀 360評(píng)論 0 0

友情鏈接更多精彩內(nèi)容