那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Git分支,為何以及如何使用分支

Linux愛好者 ? 來源:未知 ? 作者:李倩 ? 2018-06-11 11:08 ? 次閱讀

在本系列的前兩篇文章中,我們開始使用 Git,學(xué)會如何克隆項目,修改、增加和刪除內(nèi)容。在這第三篇文章中,我將介紹 Git 分支,為何以及如何使用分支。

不妨用樹來描繪 Git 倉庫。圖中的樹有很多分支,或長或短,或從樹干延伸或從其它分支延伸。在這里,我們用樹干比作倉庫的 master 分支,其中master代指 ”master 分支”,是 Git 倉庫的中心分支或第一個分支。為簡單起見,我們假設(shè)master是樹干,其它分支都是從該分支分出的。

為何在 Git 倉庫中使用分支

使用分支的主要理由為:

如果你希望為項目增加新特性,但很可能會影響當(dāng)前可正常工作的代碼。對于該項目的活躍用戶而言,這是很糟糕的事情。與其將特性加入到其它人正在使用的master分支,更好的方法是在倉庫的其它分支中變更代碼,下面會給出具體的工作方式。

更重要的是,Git 其設(shè)計用于協(xié)作。如果所有人都在你代碼倉庫的master分支上操作,會引發(fā)很多混亂。對編程語言或項目的知識和閱歷因人而異;有些人可能會編寫有錯誤或缺陷的代碼,也可能會編寫你覺得不適合該項目的代碼。使用分支可以讓你核驗他人的貢獻(xiàn)并選擇適合的加入到項目中。(這里假設(shè)你是代碼庫唯一的所有者,希望對增加到項目中的代碼有完全的控制。在真實的項目中,代碼庫有多個具有合并代碼權(quán)限的所有者)

創(chuàng)建分支

讓我們回顧本系列上一篇文章,看一下在我們的 Demo 目錄中分支是怎樣的。如果你沒有完成上述操作,請按照文章中的指示從 GitHub 克隆代碼并進(jìn)入 Demo 目錄。運行如下命令:

pwd

git branch

ls -la

pwd命令(是當(dāng)前工作目錄的英文縮寫)返回當(dāng)前你所處的目錄(以便確認(rèn)你在Demo目錄中),git branch列出該項目在你主機上的全部分支,ls -la列出當(dāng)前目錄下的所有文件。你的終端輸出類似于:

在master分支中,只有一個文件README.md。(Git 會友好地忽略掉其它目錄和文件。)

接下來,運行如下命令:

git status

git checkout -bmyBranch

git status

第一條命令git status告知你當(dāng)前位于branch master,(就像在終端中看到的那樣)它與origin/master處于同步狀態(tài),這意味著 master 分支的本地副本中的全部文件也出現(xiàn)在 GitHub 中。兩份副本沒有差異,所有的提交也是一致的。

下一條命令git checkout -b myBranch中的-b告知 Git 創(chuàng)建一個名為myBranch的新分支,然后checkout命令將我們切換到新創(chuàng)建的分支。運行第三條命令git status確保你已經(jīng)位于剛創(chuàng)建的分支下。

如你所見,git status告知你當(dāng)前處于myBranch分支,沒有變更需要提交。這是因為我們既沒有增加新文件,也沒有修改已有文件。

如果希望以可視化的方式查看分支,可以運行g(shù)itk命令。如果遇到報錯bash: gitk: command not found...,請先安裝gitk軟件包(找到你操作系統(tǒng)對應(yīng)的安裝文檔,以獲得安裝方式)。

(LCTT 譯注:需要在有 X 服務(wù)器的終端運行g(shù)itk,否則會報錯)

下圖展示了我們在 Demo 項目中的所作所為:你最后一次提交(的對應(yīng)信息)是Delete file.txt,在此之前有三次提交。當(dāng)前的提交用黃點標(biāo)注,之前的提交用藍(lán)點標(biāo)注,黃點和Delete file.txt之間的三個方塊展示每個分支所在的位置(或者說每個分支中的最后一次提交的位置)。由于myBranch剛創(chuàng)建,提交狀態(tài)與master分支及其對應(yīng)的記為remotes/origin/master的遠(yuǎn)程master分支保持一致。(非常感謝來自 Red Hat 的Peter Savage讓我知道gitk這個工具)

下面讓我們在myBranch分支下創(chuàng)建一個新文件并觀察終端輸出。運行如下命令:

echo"Creating a newFile on myBranch" > newFile

cat newFile

git status

第一條命令中的echo創(chuàng)建了名為newFile的文件,接著cat newFile打印出文件內(nèi)容,最后git status告知你我們myBranch分支的當(dāng)前狀態(tài)。在下面的終端輸出中,Git 告知myBranch分支下有一個名為newFile的文件當(dāng)前處于untracked狀態(tài)。這表明我們沒有讓 Git 追蹤發(fā)生在文件newFile上的變更。

下一步是增加文件,提交變更并將newFile文件推送至myBranch分支(請回顧本系列上一篇文章獲得更多細(xì)節(jié))。

git add newFile

git commit -m"Adding newFile to myBranch"

git push origin myBranch

在上述命令中,push命令使用的分支參數(shù)為myBranch而不是master。Git 添加newFile并將變更推送到你 GitHub 賬號下的 Demo 倉庫中,告知你在 GitHub 上創(chuàng)建了一個與你本地副本分支myBranch一樣的新分支。終端輸出截圖給出了運行命令的細(xì)節(jié)及命令輸出。

當(dāng)你訪問 GitHub 時,在分支選擇的下拉列表中可以發(fā)現(xiàn)兩個可供選擇的分支。

點擊myBranch切換到myBranch分支,你可以看到在此分支上新增的文件。

截至目前,我們有兩個分支:一個是master分支,只有一個README.md文件;另一個是myBranch分支,有兩個文件。

你已經(jīng)知道如何創(chuàng)建分支了,下面我們再創(chuàng)建一個分支。輸入如下命令:

git checkout master

git checkout -bmyBranch2

touch newFile2

git add newFile2

git commit -m"Adding newFile2 to myBranch2"

git push origin myBranch2

我不再給出終端輸出,需要你自己嘗試,但你可以在GitHub 代碼庫中驗證你的結(jié)果。

刪除分支

由于我們增加了兩個分支,下面刪除其中的一個(myBranch),包括兩步:

刪除本地分支你不能刪除正在操作的分支,故切換到master分支 (或其它你希望保留的分支),命令及終端輸出如下:

git branch可以列出可用的分支,使用checkout切換到master分支,然后使用git branch -D myBranch刪除該分支。再次運行g(shù)it branch檢查是否只剩下兩個分支(而不是三個)。

刪除 GitHub 上的分支使用如下命令刪除myBranch的遠(yuǎn)程分支:

git push origin :myBranch

上面push命令中分支名稱前面的冒號(:)告知 GitHub 刪除分支。另一種寫法為:

git push -dorigin myBranch

其中 -d (也可以用 --delete) 也用于告知 GitHub 刪除你的分支。

我們學(xué)習(xí)了 Git 分支的使用,在本系列的下一篇文章中,我們將介紹如何執(zhí)行 fetch 和 rebase 操作,對于多人同時的貢獻(xiàn)的項目而言,這是很必須學(xué)會的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • MASTER
    +關(guān)注

    關(guān)注

    0

    文章

    104

    瀏覽量

    11329
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    201

    瀏覽量

    15818
  • GitHub
    +關(guān)注

    關(guān)注

    3

    文章

    473

    瀏覽量

    16564

原文標(biāo)題:Git 分支操作介紹

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于git的遠(yuǎn)程分支的詳細(xì)介紹

    不知道大家有沒有經(jīng)歷過,當(dāng)我們切換到了一個新的分支想要提交代碼的時候,總會遇到這樣的錯誤。 我們把日志里的英文翻譯過來是說,我們當(dāng)前的分支沒有設(shè)置任何上游分支。然后git提示我們可以運
    的頭像 發(fā)表于 10-11 10:03 ?3267次閱讀
    關(guān)于<b class='flag-5'>git</b>的遠(yuǎn)程<b class='flag-5'>分支</b>的詳細(xì)介紹

    CPU分支預(yù)測對程序的影響

    分支預(yù)測的英文名字是“Branch Prediction”,如果大家在Google上搜索這個關(guān)鍵字,可以看到關(guān)于分支預(yù)測的很多內(nèi)容。不過,要搞清楚分支預(yù)測是如何工作的,才是問題的關(guān)鍵。
    發(fā)表于 09-23 14:11 ?1172次閱讀

    Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

    在實際的工作生活中,往往需要將本地的分支和遠(yuǎn)程分支關(guān)聯(lián),這樣我們就可以使用git pull命令來更新拉取最新的代碼,并使用git push命令將自己本地的修改推送到遠(yuǎn)程倉庫。但是如果此
    的頭像 發(fā)表于 12-15 09:27 ?3396次閱讀
    <b class='flag-5'>Git</b>命令之本地<b class='flag-5'>分支</b>與遠(yuǎn)程<b class='flag-5'>分支</b>關(guān)聯(lián)和解除

    飛凌嵌入式ElfBoard ELF 1板卡-本地倉庫管理之分支間的操作

    當(dāng)工作區(qū)的文件可能在某一階段用于兩個項目,之后做不同修改時,就可以在該階段切出新的分支,分別進(jìn)行管理。當(dāng)前分支以剛搭建好的git倉庫為例,剛搭建完的倉庫只有master分支,使用
    發(fā)表于 01-20 09:38

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-本地倉庫管理之分支間的操作

    當(dāng)工作區(qū)的文件可能在某一階段用于兩個項目,之后做不同修改時,就可以在該階段切出新的分支,分別進(jìn)行管理。當(dāng)前分支以剛搭建好的git倉庫為例,剛搭建完的倉庫只有master分支,使用
    發(fā)表于 01-21 14:32

    git簡單使用(一)

    倉庫,以及如何進(jìn)行分支控制:1.創(chuàng)建一個文件夾mkdir git-study2.初始化倉庫git init3.查看下當(dāng)前分支
    發(fā)表于 02-17 16:18

    git merge后,原分支的內(nèi)容沒有出現(xiàn)在新的master分支中。

    我新建了一個rico分支,現(xiàn)在想把rico分支的內(nèi)容合并到master分支,但是合并之后,我在rico分鐘中新建的文件夾,并沒有出現(xiàn)在master中,這是為什么呢??rico分支中有
    發(fā)表于 03-12 00:48

    Git Flow應(yīng)該拋棄的原因

    Git-flow 是一種分支和合并方法。十年前,因為一篇名為「一個成功的 Git 分支模型」的文章,Git-flow 變得廣為人知。
    的頭像 發(fā)表于 03-21 13:41 ?1551次閱讀
    <b class='flag-5'>Git</b> Flow應(yīng)該拋棄的原因

    電纜分支箱安裝_電纜分支箱的應(yīng)用

    你真的對電纜分支箱安裝都非常的了解了么?在安裝之前要準(zhǔn)備什么、安裝要注意什么、安裝好之后又該如何驗收等等,筆者特別提醒大家電纜分支箱安裝好了才可以確保后期的穩(wěn)定使用,下面就由生產(chǎn)廠家紅蘇電器為大家詳細(xì)介紹電纜分支箱安裝知識。
    發(fā)表于 12-24 16:43 ?3880次閱讀

    Git / GitHub 是什么?有什么用?

    分支Git 里很重要的概念,大家可以使用 Learning Git Branching 這個在線游戲來學(xué)習(xí)和理解分支
    發(fā)表于 12-09 09:39 ?990次閱讀

    Git分支管理

    在項目的開發(fā)過程中,很多時候都會使用Git托管工具進(jìn)行項目文件或者代碼的管理,方便團(tuán)隊成員之間的協(xié)作開發(fā)。使用Git進(jìn)行項目管理目前也是越來越受到歡迎,除了Git還有很多的其他項目管理,其目的都是為了能夠方便項目管理、團(tuán)隊協(xié)作開
    的頭像 發(fā)表于 02-20 14:49 ?1083次閱讀
    <b class='flag-5'>Git</b>的<b class='flag-5'>分支</b>管理

    git拉取遠(yuǎn)程分支到本地的兩種方法

    使用這種方式會在本地倉庫新建分支xxx,并自動切換到新建的分支xxx,當(dāng)然了遠(yuǎn)程分支xxx的代碼也拉取到了本地分支xxx中。采用這種方法建立的本地
    的頭像 發(fā)表于 05-06 09:19 ?1.5w次閱讀

    git rebase與相關(guān)git merge命令比較

    。 #概念 ????首先要理解的是git rebase和git merge解決了同樣的問題。這兩個命令都旨在將更改從一個分支集成到另一個分支 - 它們只是以不同的方式進(jìn)行。試想一下當(dāng)你
    的頭像 發(fā)表于 05-26 16:22 ?952次閱讀
    <b class='flag-5'>git</b> rebase與相關(guān)<b class='flag-5'>git</b> merge命令比較

    git rebase和git merge的區(qū)別

    ? 解決沖突 git rebase和git merge的區(qū)別 分支合并 git merge是用來合并兩個分支的。 比如:將 b
    的頭像 發(fā)表于 07-05 09:54 ?701次閱讀
    <b class='flag-5'>git</b> rebase和<b class='flag-5'>git</b> merge的區(qū)別

    何以及為何要在EtherCAT?應(yīng)用中使用DP83826

    電子發(fā)燒友網(wǎng)站提供《如何以及為何要在EtherCAT?應(yīng)用中使用DP83826.pdf》資料免費下載
    發(fā)表于 08-27 10:19 ?0次下載
    如<b class='flag-5'>何以及</b><b class='flag-5'>為何</b>要在EtherCAT?應(yīng)用中使用DP83826
    最好的百家乐官网博彩网站| 百家乐官网破解的办法| 百家乐游戏图片| 百家乐官网现金网信誉排名| 大发在线扑克| 回力百家乐的玩法技巧和规则| 百家乐官网单机游戏下| 鹤峰县| 大发888下载网站| 百家乐博彩通| 卢克索百家乐官网的玩法技巧和规则 | 百家乐真人娱乐场| 破解百家乐官网游戏机| 耒阳市| 巴登娱乐城开户| 犹太人百家乐的玩法技巧和规则 | 免水百家乐官网的玩法技巧和规则 | 马牌百家乐官网现金网| 大发888娱乐场开户| 百家乐哪条路准| 百家乐波浪法则| 百家乐官网庄闲预测| 长泰县| bet365体育在线15| 真人百家乐网络游戏信誉怎么样| 网上百家乐有假的吗| 蓝盾百家乐官网代理打| 百家乐官网代打是真的吗| 足球皇冠大全| 大发888娱乐城真人视讯服务 | 百家乐官网博彩金| 江阴市| 六合彩教程| 水果机万能遥控器| 大上海百家乐的玩法技巧和规则| 澳门百家乐必杀技| 百家乐官网庄闲出现几| 新澳博百家乐官网娱乐城| 百家乐官网仿水晶筹码| 葡京赌场| 德州扑克玩法说明|