大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 一文讀懂Git管理分支

一文讀懂Git管理分支

更新時(shí)間:2021-12-23 11:16:20 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1662次

分支操作允許創(chuàng)建另一條開(kāi)發(fā)線。我們可以使用此操作將開(kāi)發(fā)過(guò)程分為兩個(gè)不同的方向。例如,我們發(fā)布了一個(gè) 6.0 版本的產(chǎn)品,我們可能想要?jiǎng)?chuàng)建一個(gè)分支,以便 7.0 功能的開(kāi)發(fā)可以與 6.0 錯(cuò)誤修復(fù)分開(kāi)。

創(chuàng)建分支

Tom 使用 git branch <branch name>命令創(chuàng)建一個(gè)新分支。我們可以從現(xiàn)有分支創(chuàng)建一個(gè)新分支。我們可以使用特定的提交或標(biāo)簽作為起點(diǎn)。如果未提供任何特定的提交 ID,則將以 HEAD 為起點(diǎn)創(chuàng)建分支。

[jerry@CentOS src]$ git branch new_branch
[jerry@CentOS src]$ git branch
* master
new_branch

創(chuàng)建了一個(gè)新分支;Tom 使用 git branch 命令列出可用的分支。Git 在當(dāng)前簽出的分支之前顯示一個(gè)星號(hào)。

創(chuàng)建分支操作的圖示如下所示

在分支之間切換

Jerry 使用 git checkout 命令在分支之間切換。

[jerry@CentOS src]$ git checkout new_branch
Switched to branch 'new_branch'
[jerry@CentOS src]$ git branch
master
* new_branch

創(chuàng)建和切換分支的快捷方式

在上面的例子中,我們分別使用了兩個(gè)命令來(lái)創(chuàng)建和切換分支。Git 為checkout 命令提供了-b選項(xiàng);此操作創(chuàng)建一個(gè)新分支并立即切換到新分支。

[jerry@CentOS src]$ git checkout -b test_branch
Switched to a new branch 'test_branch'
[jerry@CentOS src]$ git branch
master
new_branch
* test_branch

刪除一個(gè)分支

可以通過(guò)在 git branch 命令中提供 –D 選項(xiàng)來(lái)刪除分支。但在刪除現(xiàn)有分支之前,切換到另一個(gè)分支。

Jerry 目前在test_branch 上,他想刪除該分支。所以他切換分支并刪除分支,如下所示。

[jerry@CentOS src]$ git branch
master
new_branch
* test_branch
[jerry@CentOS src]$ git checkout master
Switched to branch 'master'
[jerry@CentOS src]$ git branch -D test_branch
Deleted branch test_branch (was 5776472).

現(xiàn)在,Git 將只顯示兩個(gè)分支。

[jerry@CentOS src]$ git branch
* master
new_branch

重命名分支

Jerry 決定在他的字符串操作項(xiàng)目中添加對(duì)寬字符的支持。他已經(jīng)創(chuàng)建了一個(gè)新分支,但是分支名稱不合適。因此,他通過(guò)使用-m選項(xiàng)后跟舊分支名稱和新分支名稱來(lái)更改分支名稱。

[jerry@CentOS src]$ git branch
* master
new_branch
[jerry@CentOS src]$ git branch -m new_branch wchar_support

現(xiàn)在, git branch 命令將顯示新的分支名稱。

[jerry@CentOS src]$ git branch
* master
wchar_support

合并兩個(gè)分支

Jerry 實(shí)現(xiàn)了一個(gè)函數(shù)來(lái)返回寬字符串的字符串長(zhǎng)度。新代碼將顯示如下

[jerry@CentOS src]$ git branch
master
* wchar_support
[jerry@CentOS src]$ pwd
/home/jerry/jerry_repo/project/src
[jerry@CentOS src]$ git diff

上面的命令產(chǎn)生以下結(jié)果

t a/src/string_operations.c b/src/string_operations.c
index 8ab7f42..8fb4b00 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,4 +1,14 @@
#include <stdio.h>
+#include <wchar.h>
+
+size_t w_strlen(const wchar_t *s)
+
{
   +
   const wchar_t *p = s;
   +
   +
   while (*p)
   + ++p;
   + return (p - s);
   +
}

測(cè)試后,他提交并將他的更改推送到新分支。

[jerry@CentOS src]$ git status -s
M string_operations.c
?? string_operations
[jerry@CentOS src]$ git add string_operations.c
[jerry@CentOS src]$ git commit -m 'Added w_strlen function to return string lenght of wchar_t
string'
[wchar_support 64192f9] Added w_strlen function to return string lenght of wchar_t string
1 files changed, 10 insertions(+), 0 deletions(-)

請(qǐng)注意,Jerry 正在將這些更改推送到新分支,這就是他使用分支名稱wchar_support而不是master分支的原因。

[jerry@CentOS src]$ git push origin wchar_support   <??? Observer branch_name

上述命令將產(chǎn)生以下結(jié)果。

Counting objects: 7, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 507 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
To [email protected]:project.git
* [new branch]
wchar_support -> wchar_support

提交更改后,新分支將如下所示

Tom 很好奇 Jerry 在他的私有分支里做了什么,他檢查了wchar_support分支的日志。

[tom@CentOS src]$ pwd
/home/tom/top_repo/project/src
[tom@CentOS src]$ git log origin/wchar_support -2

上述命令將產(chǎn)生以下結(jié)果。

commit 64192f91d7cc2bcdf3bf946dd33ece63b74184a3
Author: Jerry Mouse <[email protected]>
Date: Wed Sep 11 16:10:06 2013 +0530
Added w_strlen function to return string lenght of wchar_t string
commit 577647211ed44fe2ae479427a0668a4f12ed71a1
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 10:21:20 2013 +0530
Removed executable binary

通過(guò)查看提交消息,Tom 意識(shí)到 Jerry 為寬字符實(shí)現(xiàn)了 strlen 函數(shù),并且他希望在 master 分支中具有相同的功能。他沒(méi)有重新實(shí)現(xiàn),而是決定通過(guò)將他的分支與主分支合并來(lái)獲取 Jerry 的代碼。

[tom@CentOS project]$ git branch
* master
[tom@CentOS project]$ pwd
/home/tom/top_repo/project
[tom@CentOS project]$ git merge origin/wchar_support
Updating 5776472..64192f9
Fast-forward
src/string_operations.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)

合并操作后,主分支將出現(xiàn)如下

現(xiàn)在,分支wchar_support已與主分支合并。我們可以通過(guò)查看提交消息或查看對(duì) string_operation.c 文件所做的修改來(lái)驗(yàn)證它。

[tom@CentOS project]$ cd src/
[tom@CentOS src]$ git log -1
commit 64192f91d7cc2bcdf3bf946dd33ece63b74184a3
Author: Jerry Mouse 
Date: Wed Sep 11 16:10:06 2013 +0530
Added w_strlen function to return string lenght of wchar_t string
[tom@CentOS src]$ head -12 string_operations.c

上述命令將產(chǎn)生以下結(jié)果。

#include <stdio.h>
#include <wchar.h>
size_t w_strlen(const wchar_t *s)
{
   const wchar_t *p = s;
   while (*p)
      ++p;
   return (p - s);
}

測(cè)試后,他將他的代碼更改推送到主分支。

[tom@CentOS src]$ git push origin master
Total 0 (delta 0), reused 0 (delta 0)
To [email protected]:project.git
5776472..64192f9 master ?> master

變基分支

Git rebase 命令是一個(gè)分支合并命令,但不同的是它修改了提交的順序。

Git merge 命令嘗試將來(lái)自其他分支的提交放在當(dāng)前本地分支的 HEAD 之上。例如,你的本地分支提交了 A->B->C->D 并且合并分支提交了 A->B->X->Y,那么 git merge 會(huì)將當(dāng)前本地分支轉(zhuǎn)換為類(lèi)似 A-> B->C->D->X->Y

Git rebase 命令試圖找出當(dāng)前本地分支和合并分支之間的共同祖先。然后通過(guò)修改當(dāng)前本地分支中的提交順序?qū)⑻峤煌扑偷奖镜胤种А@?,如果您的本地分支提交?A->B->C->D 并且合并分支提交了 A->B->X->Y,那么 Git rebase 會(huì)將當(dāng)前本地分支轉(zhuǎn)換為類(lèi)似 A- >B->X->Y->C->D。

當(dāng)多個(gè)開(kāi)發(fā)人員在單個(gè)遠(yuǎn)程存儲(chǔ)庫(kù)上工作時(shí),您無(wú)法修改遠(yuǎn)程存儲(chǔ)庫(kù)中的提交順序。在這種情況下,您可以使用 rebase 操作將本地提交置于遠(yuǎn)程存儲(chǔ)庫(kù)提交之上,并且您可以推送這些更改。如果您想了解更多相關(guān)知識(shí),可以來(lái)關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容豐富,通俗易懂,比較適合沒(méi)有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 台湾成人性视频免费播放 | 久 在线播放 | 欧美国产激情二区三区 | 妖精视频一区二区三区 | 激情亚州 | 日本老太做爰xx | 99久久免费精品 | 国产乱人伦av在线a 国产乱人伦精品一区二区 国产乱人伦偷精品视频不卡 | 91成人啪国产啪永久地址 | julia在线视频| 欧美成人另类 | 久99久热 | 精品毛片免费看 | 久久亚洲国产精品 | 国产高清不卡 | 成人免费视频国产 | 日韩欧美国产一区二区三区四区 | 国产成 人 综合 亚洲网 | 国产精品免费看香蕉 | 日日爱夜夜操 | 亚洲香蕉国产高清在线播放 | 国产精品18久久久久久久久久 | 色综合天天综合给合国产 | 日本韩国欧美在线观看 | 青青国产成人久久91网站站 | 国产欧美日韩精品第二区 | 韩国网站爱久久 | 成人亚洲精品一区二区 | 欧美日韩永久久一区二区三区 | 久草狼人| 婷婷色九月综合激情丁香 | 久久午夜剧场 | 亚洲高清中文字幕综合网 | 欧美啪啪网站 | 久久精品综合国产二区 | 日韩综合在线 | 欧美人交性视频在线香蕉 | 91啦视频在线观看 | 国产福利视频一区二区微拍 | 99精品久久精品一区二区 | 久久日本精品99久久久久 |