您好,登錄后才能下訂單哦!
本篇內容介紹了“Git管理分支怎么創(chuàng)建”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
分支操作允許創(chuàng)建另一條開發(fā)線。我們可以使用此操作將開發(fā)過程分為兩個不同的方向。例如,我們發(fā)布了一個 6.0 版本的產(chǎn)品,我們可能想要創(chuàng)建一個分支,以便 7.0 功能的開發(fā)可以與 6.0 錯誤修復分開。
Tom 使用 git branch <branch name>命令創(chuàng)建一個新分支。我們可以從現(xiàn)有分支創(chuàng)建一個新分支。我們可以使用特定的提交或標簽作為起點。如果未提供任何特定的提交 ID,則將以 HEAD 為起點創(chuàng)建分支。
[jerry@CentOS src]$ git branch new_branch [jerry@CentOS src]$ git branch * master new_branch
創(chuàng)建了一個新分支;Tom 使用 git branch 命令列出可用的分支。Git 在當前簽出的分支之前顯示一個星號。
創(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)建和切換分支。Git 為checkout 命令提供了-b選項;此操作創(chuàng)建一個新分支并立即切換到新分支。
[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
可以通過在 git branch 命令中提供 –D 選項來刪除分支。但在刪除現(xiàn)有分支之前,切換到另一個分支。
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 將只顯示兩個分支。
[jerry@CentOS src]$ git branch * master new_branch
Jerry 決定在他的字符串操作項目中添加對寬字符的支持。他已經(jīng)創(chuàng)建了一個新分支,但是分支名稱不合適。因此,他通過使用-m選項后跟舊分支名稱和新分支名稱來更改分支名稱。
[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
Jerry 實現(xiàn)了一個函數(shù)來返回寬字符串的字符串長度。新代碼將顯示如下
[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)生以下結果
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); + }
測試后,他提交并將他的更改推送到新分支。
[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 string1 files changed, 10 insertions(+), 0 deletions(-)
請注意,Jerry 正在將這些更改推送到新分支,這就是他使用分支名稱wchar_support而不是master分支的原因。
[jerry@CentOS src]$ git push origin wchar_support <??? Observer branch_name
上述命令將產(chǎn)生以下結果。
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 gituser@git.server.com: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)生以下結果。
commit 64192f91d7cc2bcdf3bf946dd33ece63b74184a3 Author: Jerry Mouse <jerry@tutorialspoint.com>Date: Wed Sep 11 16:10:06 2013 +0530Added w_strlen function to return string lenght of wchar_t stringcommit 577647211ed44fe2ae479427a0668a4f12ed71a1 Author: Tom Cat <tom@tutorialspoint.com>Date: Wed Sep 11 10:21:20 2013 +0530Removed executable binary
通過查看提交消息,Tom 意識到 Jerry 為寬字符實現(xiàn)了 strlen 函數(shù),并且他希望在 master 分支中具有相同的功能。他沒有重新實現(xiàn),而是決定通過將他的分支與主分支合并來獲取 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已與主分支合并。我們可以通過查看提交消息或查看對 string_operation.c 文件所做的修改來驗證它。
[tom@CentOS project]$ cd src/ [tom@CentOS src]$ git log -1commit 64192f91d7cc2bcdf3bf946dd33ece63b74184a3 Author: Jerry Mouse Date: Wed Sep 11 16:10:06 2013 +0530Added w_strlen function to return string lenght of wchar_t string[tom@CentOS src]$ head -12 string_operations.c
上述命令將產(chǎn)生以下結果。
#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); }
測試后,他將他的代碼更改推送到主分支。
[tom@CentOS src]$ git push origin master Total 0 (delta 0), reused 0 (delta 0) To gituser@git.server.com:project.git5776472..64192f9 master ?> master
Git rebase 命令是一個分支合并命令,但不同的是它修改了提交的順序。
Git merge 命令嘗試將來自其他分支的提交放在當前本地分支的 HEAD 之上。例如,你的本地分支提交了 A->B->C->D 并且合并分支提交了 A->B->X->Y,那么 git merge 會將當前本地分支轉換為類似 A-> B->C->D->X->Y
Git rebase 命令試圖找出當前本地分支和合并分支之間的共同祖先。然后通過修改當前本地分支中的提交順序將提交推送到本地分支。例如,如果您的本地分支提交了 A->B->C->D 并且合并分支提交了 A->B->X->Y,那么 Git rebase 會將當前本地分支轉換為類似 A- >B->X->Y->C->D。
“Git管理分支怎么創(chuàng)建”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。