日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git分支/标签操作

發(fā)布時(shí)間:2025/4/14 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git分支/标签操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

git分支類似于某一個(gè)模塊,等到所有模塊開發(fā)完畢時(shí),最后聚合在一起形成一個(gè)項(xiàng)目。而分支之間一般是不會(huì)受影響的。
git 分支的基本操作:

  • git branch branchname 表示創(chuàng)建分支,新建分支的命令是基于當(dāng)前所在分支創(chuàng)建的,創(chuàng)建新分支的內(nèi)容和當(dāng)前所在分支的內(nèi)容是完全一樣的。
  • git checkout branchname 表示切換到指定分支上。
  • git checkout -b branchname 表示創(chuàng)建分支并且切換到分支。
  • git merge branchname表示合并分支到主分支master。在執(zhí)行這個(gè)操作的時(shí)候,要先切換到master分支,然后在執(zhí)行該命令。
  • git branch 表示本地分支列表,git 默認(rèn)是在master分支上的,當(dāng)前分支前面會(huì)有一個(gè)*號(hào)。
  • git branch -r 表示查看遠(yuǎn)程分支列表。
  • git branch -d branc_name 表示刪除本地分支。 git branch -D branch_name(強(qiáng)制刪除分支)。
  • git push origin :branch_name 表示刪除遠(yuǎn)程分支。
  • 把分支推送到遠(yuǎn)程倉庫:git push origin branch_name ,如果想要給遠(yuǎn)程分支取另一個(gè)名稱的話:git push origin branch_name:branch_othername。
  • 遠(yuǎn)程有個(gè)分支,而本地沒有,將遠(yuǎn)程分支遷到本地:git checkout branch_name origin/branch_name。同樣的,將遠(yuǎn)程分支遷到本地并且切換到該分支:git checkout -b branch_name origin/branch_name。
  • merge和rebase
    merge和rebase都有合并分支的作用,但是二者又有一些區(qū)別。
    例如現(xiàn)在有一個(gè)分支A,現(xiàn)在要把A分支合并到master分支,可以如下操作:
    git checkout master
    git merge A
    先切換到master分支,在進(jìn)行合并。

    利用rebase也一樣能完成同樣的功能。
    git checkout master
    git rebase A
    執(zhí)行完畢也一樣完成了分支的合并。
    他們的區(qū)別參見:https://blog.csdn.net/liuxiaoheng1992/article/details/79108233


  • 解決分支合并時(shí)的沖突
    有時(shí)候分支在合并的時(shí)候會(huì)出現(xiàn)沖突,這個(gè)時(shí)候需要先解決沖突然后在合并。解決沖突就是手動(dòng)編輯我們需要的內(nèi)容。當(dāng)不存在沖突時(shí)在合并即可。
    當(dāng)Git無法自動(dòng)合并分支時(shí),就必須首先解決沖突。解決沖突后,再提交,合并完成。解決沖突就是把Git合并失敗的文件手動(dòng)編輯為我們希望的內(nèi)容,再提交。
    git log --graph --pretty=oneline --abbrev-commit 可以查看分支合并的情況。

    通常一般在合并分支時(shí)git采用的是Fast-forward模式,即快速合并分支,但這種模式下,刪除分支后,會(huì)丟掉分支信息。
    如果要強(qiáng)制禁用Fast forward模式,Git就會(huì)在merge時(shí)生成一個(gè)新的commit,這樣,從分支歷史上就可以看出分支信息。
    git merge --no-ff -m "merge with no-ff" dev 注意:--on-ff表示禁用fast-forward模式,因?yàn)闀?huì)生成一個(gè)新的commit所以需要把描述信息-m加上。
    合并分支時(shí),加上--no-ff參數(shù)就可以用普通模式合并,合并后的歷史有分支,能看出來曾經(jīng)做過合并,而fast forward合并就看不出來曾經(jīng)做過合并。
    git的分支特別強(qiáng)大,一般master主分支都是比較穩(wěn)定的,開發(fā)的話都是在dev分支上進(jìn)行,當(dāng)每一個(gè)功能模塊開發(fā)完成過后只需要將它合并到dev中即可,如果沒有問題了可以將dev合并到master分支上。


    當(dāng)需要緊急修復(fù)bug的時(shí)候,而你正在開發(fā)新的功能,功能還沒有開發(fā)完成,但是有bug需要立馬處理,這時(shí)怎么辦呢? 別擔(dān)心,你只管切換分支到需要修改bug的分支去修復(fù)bug就好,其他的工作交給stash來完成。

    stash命令:用于暫時(shí)存儲(chǔ)你沒有完成的工作,相當(dāng)于一個(gè)管家,讓他先幫你把沒有完成的工作先保管起來,等你bug修復(fù)完成了回來繼續(xù)做原來沒有做完的工作。
    執(zhí)行g(shù)it stash,就把沒有完成的工作暫時(shí)存儲(chǔ)起來了,在執(zhí)行g(shù)it status會(huì)發(fā)現(xiàn)工作區(qū)很干凈。
    想要看暫存區(qū)里面有多少工作沒有完成可以輸入git stash list 查看列表。
    當(dāng)你把bug修復(fù)完成了,想要繼續(xù)先前的工作,有兩種方式恢復(fù)。
    方式一:git stash apply,執(zhí)行完成后你以前暫存的文件就已經(jīng)恢復(fù)了,像什么都沒有發(fā)生一樣。緊接著就要?jiǎng)h除暫存區(qū)記錄,git stash drop這樣就把記錄刪除了。
    方式二:git stash pop,它與apply的區(qū)別是他不但幫你恢復(fù)了暫存文件,而且還幫你刪除了暫存區(qū)記錄。
    drop 只是刪除一條記錄,可以跟參數(shù)stash_id刪除指定的文件,不指定的話刪除最近的文件,而想要清空的話,可以使用git stash clear。表示將暫存區(qū)的所有記錄全部清空。
    當(dāng)暫存區(qū)有很多條記錄時(shí),你可指定恢復(fù)那一條內(nèi)容:git stash apply stash@{0}
    如下圖所示:


    多人協(xié)作時(shí)對(duì)遠(yuǎn)程倉庫的操作


    當(dāng)你從遠(yuǎn)程倉庫克隆時(shí),實(shí)際上Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來了,并且,遠(yuǎn)程倉庫的默認(rèn)名稱是origin。

  • git remote 表示查看遠(yuǎn)程倉庫有哪些分支
  • git remote -v表示查看遠(yuǎn)程倉庫的詳細(xì)信息,可以查看遠(yuǎn)程分支哪些可以抓取和推送的分支

    fetch表示可以抓取的倉庫,push表示可以提交的倉庫。
  • git remote show origin 可以查看遠(yuǎn)程分支詳細(xì)信息,比如當(dāng)前在哪個(gè)分支,本地哪個(gè)分支和遠(yuǎn)程分支進(jìn)行了關(guān)聯(lián)等等。
  • git log --oneline --decorate 命令查看各個(gè)分支當(dāng)前所指的對(duì)象。
  • git branch 可以查看當(dāng)前的分支列表。
  • git branch -v 可以查看每一個(gè)分支的最后一次提交信息。
  • --merged 與 --no-merged 這兩個(gè)有用的選項(xiàng)可以過濾這個(gè)列表中已經(jīng)合并或尚未合并到當(dāng)前分支的分支。 如果要查看哪些分支已經(jīng)合并到當(dāng)前分支,可以運(yùn)行 git branch --merged。
  • 如果要同步你的工作,運(yùn)行 git fetch origin 命令。 這個(gè)命令查找 “origin” 是哪一個(gè)服務(wù)器(在本例中,它是 git.ourcompany.com),從中抓取本地沒有的數(shù)據(jù),并且更新本地?cái)?shù)據(jù)庫,移動(dòng) origin/master 指針指向新的、更新后的位置。
  • git push origin master 表示推送分支,將本地分支推送到遠(yuǎn)程倉庫。如果需要推送其他分支,將master換成其他的即可,origin是表示遠(yuǎn)程倉庫的名字。
  • git pull 表示將遠(yuǎn)程倉庫抓取到本地
    一般通常情況下,都是先pull在push。

  • 多人協(xié)作的工作模式通常是這樣:
    首先,可以試圖用git push origin 推送自己的修改;
    如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull試圖合并;
    如果合并有沖突,則解決沖突,并在本地提交;
    沒有沖突或者解決掉沖突后,再用git push origin 推送就能成功!
    如果git pull提示no tracking information,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream-to=origin/branchname 創(chuàng)建鏈接關(guān)系。
    例如git branch --set-upstream-to=origin/dev dev,創(chuàng)建一個(gè)dev分支并且和遠(yuǎn)程dev分支建立連接關(guān)系。
    關(guān)于分支沖突,以及分支的處理可以參見:https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320


    git的標(biāo)簽相關(guān)操作


    git中的標(biāo)簽和分支差不多的,它也是指向的是某一次commit提交,標(biāo)簽的好處就是可以讓你迅速回到某一個(gè)版本,標(biāo)簽也就是用來標(biāo)記版本信息的,例如當(dāng)前版本是v1.0,那么就在master上打一個(gè)標(biāo)簽。打標(biāo)簽需要切換到對(duì)應(yīng)的分支。默認(rèn)的標(biāo)簽是打在最近最新的一次commit上,如果某一次commit之后沒有打標(biāo)簽,只需要通過日志找到commit_id即可。
    在git中標(biāo)簽有兩種:輕量標(biāo)簽和附注標(biāo)簽。一個(gè)輕量標(biāo)簽很像一個(gè)不會(huì)改變的分支 - 它只是一個(gè)特定提交的引用。然而,附注標(biāo)簽是存儲(chǔ)在 Git 數(shù)據(jù)庫中的一個(gè)完整對(duì)象。 它們是可以被校驗(yàn)的;其中包含打標(biāo)簽者的名字、電子郵件地址、日期時(shí)間;還有一個(gè)標(biāo)簽信息;并且可以使用 GNU Privacy Guard (GPG)簽名與驗(yàn)證。 通常建議創(chuàng)建附注標(biāo)簽,這樣你可以擁有以上所有信息;但是如果你只是想用一個(gè)臨時(shí)的標(biāo)簽,或者因?yàn)槟承┰虿幌胍4婺切┬畔?#xff0c;輕量標(biāo)簽也是可用的。

  • git tag tag_name 表示創(chuàng)建一個(gè)標(biāo)簽,標(biāo)簽總是指向一個(gè)commit(這樣創(chuàng)建的標(biāo)簽就是輕量標(biāo)簽)。
  • 還可以創(chuàng)建帶有說明的標(biāo)簽,用-a指定標(biāo)簽名,-m指定說明文字。例如:git tag -a tag_name -m"說明文字" |commit_id。(這樣創(chuàng)建的標(biāo)簽就是附注標(biāo)簽)
  • git show tag_name可以查看標(biāo)簽的一些信息。
  • 要切換到某個(gè)標(biāo)簽,可以使用 git checkout 標(biāo)簽名。
  • 直接使用git tag表示查看倉庫的標(biāo)簽信息。
  • 對(duì)指定某一次提交打標(biāo)簽git tag tag_name commit_id。即可。
  • 需要注意的是標(biāo)簽不是按時(shí)間順序列出,而是按字母排序的。可以用git show 查看標(biāo)簽信息。如果沒有標(biāo)簽信息就是查看最近的一次提交信息。
  • git tag -d tag_name 表示刪除某一個(gè)標(biāo)簽。
  • git push origin 表示推送某個(gè)標(biāo)簽到遠(yuǎn)程。
  • git push origin --tags 表示一次推送所有未推送的標(biāo)簽到遠(yuǎn)程。
  • 如果想刪除遠(yuǎn)程標(biāo)簽,需要先刪除本地標(biāo)簽然后在刪除遠(yuǎn)程標(biāo)簽。
    git tag -d tag_name
    git push origin :refs/tags/tag_name

  • 以上就是git 分支和標(biāo)簽的基本操作

    轉(zhuǎn)載于:https://www.cnblogs.com/jasonboren/p/11094977.html

    總結(jié)

    以上是生活随笔為你收集整理的git分支/标签操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。