Git管理分支怎么创建
本篇内容介绍了“Git管理分支怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
分支操作允许创建另一条开发线。我们可以使用此操作将开发过程分为两个不同的方向。例如,我们发布了一个 6.0 版本的产品,我们可能想要创建一个分支,以便 7.0 功能的开发可以与 6.0 错误修复分开。
创建分支
Tom 使用 git branch <branch name>命令创建一个新分支。我们可以从现有分支创建一个新分支。我们可以使用特定的提交或标签作为起点。如果未提供任何特定的提交 ID,则将以 HEAD 为起点创建分支。
[jerry@CentOS class="lazy" data-src]$ git branch new_branch
[jerry@CentOS class="lazy" data-src]$ git branch
* master
new_branch
创建了一个新分支;Tom 使用 git branch 命令列出可用的分支。Git 在当前签出的分支之前显示一个星号。
创建分支操作的图示如下所示
在分支之间切换
Jerry 使用 git checkout 命令在分支之间切换。
[jerry@CentOS class="lazy" data-src]$ git checkout new_branch
Switched to branch 'new_branch'[jerry@CentOS class="lazy" data-src]$ git branch
master
* new_branch
创建和切换分支的快捷方式
在上面的例子中,我们分别使用了两个命令来创建和切换分支。Git 为checkout 命令提供了-b选项;此操作创建一个新分支并立即切换到新分支。
[jerry@CentOS class="lazy" data-src]$ git checkout -b test_branch
Switched to a new branch 'test_branch'[jerry@CentOS class="lazy" data-src]$ git branch
master
new_branch
* test_branch
删除一个分支
可以通过在 git branch 命令中提供 –D 选项来删除分支。但在删除现有分支之前,切换到另一个分支。
Jerry 目前在test_branch 上,他想删除该分支。所以他切换分支并删除分支,如下所示。
[jerry@CentOS class="lazy" data-src]$ git branch
master
new_branch
* test_branch
[jerry@CentOS class="lazy" data-src]$ git checkout master
Switched to branch 'master'[jerry@CentOS class="lazy" data-src]$ git branch -D test_branch
Deleted branch test_branch (was 5776472).
现在,Git 将只显示两个分支。
[jerry@CentOS class="lazy" data-src]$ git branch
* master
new_branch
重命名分支
Jerry 决定在他的字符串操作项目中添加对宽字符的支持。他已经创建了一个新分支,但是分支名称不合适。因此,他通过使用-m选项后跟旧分支名称和新分支名称来更改分支名称。
[jerry@CentOS class="lazy" data-src]$ git branch
* master
new_branch
[jerry@CentOS class="lazy" data-src]$ git branch -m new_branch wchar_support
现在, git branch 命令将显示新的分支名称。
[jerry@CentOS class="lazy" data-src]$ git branch
* master
wchar_support
合并两个分支
Jerry 实现了一个函数来返回宽字符串的字符串长度。新代码将显示如下
[jerry@CentOS class="lazy" data-src]$ git branch
master
* wchar_support
[jerry@CentOS class="lazy" data-src]$ pwd
/home/jerry/jerry_repo/project/class="lazy" data-src
[jerry@CentOS class="lazy" data-src]$ git diff
上面的命令产生以下结果
t a/class="lazy" data-src/string_operations.c b/class="lazy" data-src/string_operations.c
index 8ab7f42..8fb4b00 100644--- a/class="lazy" data-src/string_operations.c
+++ b/class="lazy" data-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 class="lazy" data-src]$ git status -s
M string_operations.c
?? string_operations
[jerry@CentOS class="lazy" data-src]$ git add string_operations.c
[jerry@CentOS class="lazy" data-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 class="lazy" data-src]$ git push origin wchar_support <−−− Observer branch_name
上述命令将产生以下结果。
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 class="lazy" data-src]$ pwd
/home/tom/top_repo/project/class="lazy" data-src
[tom@CentOS class="lazy" data-src]$ git log origin/wchar_support -2
上述命令将产生以下结果。
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 为宽字符实现了 strlen 函数,并且他希望在 master 分支中具有相同的功能。他没有重新实现,而是决定通过将他的分支与主分支合并来获取 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
class="lazy" data-src/string_operations.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
合并操作后,主分支将出现如下
现在,分支wchar_support已与主分支合并。我们可以通过查看提交消息或查看对 string_operation.c 文件所做的修改来验证它。
[tom@CentOS project]$ cd class="lazy" data-src/
[tom@CentOS class="lazy" data-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 class="lazy" data-src]$ head -12 string_operations.c
上述命令将产生以下结果。
#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 class="lazy" data-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管理分支怎么创建”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341