- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Git 教程之分支管理详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Git 分支管理 。
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.
有人把 Git 的分支模型称为"必杀技特性",而正是因为它,将 Git 从版本控制系统家族里区分出来.
创建分支命令:
git branch (branchname) 。
切换分支命令
git checkout (branchname) 。
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录.
合并分支命令
git merge 。
你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支.
Git 分支管理 。
列出分支 。
列出分支基本命令:
git branch 。
没有参数时,git branch 会列出你在本地的分支.
$ git branch * master 。
此例的意思就是,我们有一个叫做"master"的分支,并且该分支是当前分支.
当你执行 git init 的时候,缺省情况下 Git 就会为你创建"master"分支.
如果我们要手动创建一个分支,并切换过去。执行 git branch (branchname) 即可.
1
2
3
4
|
$ git branch testing
$ git branch
* master
testing
|
现在我们可以看到,有了一个新分支 testing.
当你以此方式在上次提交更新之后创建了新分支,如果后来又有更新提交, 然后又切换到了"testing"分支,Git 将还原你的工作目录到你创建分支时候的样子 。
接下来我们将演示如何切换分支,我们用 git checkout (branch) 切换到我们要修改的分支.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$
ls
README
$
echo
'w3cschool.cc'
> test.txt
$ git add .
$ git commit
-m
'add test.txt'
[master 048598f] add test.txt
2 files changed, 1 insertion(+), 3 deletions(-)
delete mode 100644 hello.php
create mode 100644 test.txt
$
ls
README test.txt
$ git checkout testing
Switched to branch
'testing'
$
ls
README hello.php
|
当我们切换到"testing"分支的时候,我们添加的新文件test.txt被移除了, 原来被删除的文件hello.php文件又出现了。切换回"master"分支的时候,它们有重新出现了.
1
2
3
4
|
$ git checkout master
Switched to branch
'master'
$
ls
README test.txt
|
我们也可以使用 git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
$ git checkout
-b
newtest
Switched to a new branch
'newtest'
$ git
rm
test2.txt
rm
'test2.txt'
$
ls
README test.txt
$ git commit
-am
'removed test2.txt'
[newtest 556f0a0] removed test2.txt
1 file changed, 1 deletion(-)
delete mode 100644 test2.txt
$ git checkout master
Switched to branch
'master'
$
ls
README test.txt test2.txt
|
如你所见,我们创建了一个分支,在该分支的上下文中移除了一些文件,然后切换回我们的主分支,那些文件又回来了。 使用分支将工作切分开来,从而让我们能够在不同上下文中做事,并来回切换.
删除分支 。
删除分支命令:
git branch -d (branchname) 。
例如我们要删除"testing"分支:
1
2
3
4
5
6
7
|
$ git branch
* master
testing
$ git branch
-d
testing
Deleted branch testing (was 85fc7e7).
$ git branch
* master
|
分支合并 。
一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用以下命令将任何分支合并到当前分支中去:
git merge 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ git branch
* master
newtest
$
ls
README test.txt test2.txt
$ git merge newtest
Updating 2e082b7..556f0a0
Fast
-forward
test2.txt | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 test2.txt
$
ls
README test.txt
|
以上实例中我们将 newtest 分支合并到主分支去,test2.txt 文件被删除.
合并冲突 。
合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ git branch
* master
$
cat
test.txt
w3cschool.cc
首先,我们创建一个叫做
"change_site"
的分支,切换过去,我们将内容改为 www.w3cschool.cc 。
$ git checkout
-b
change_site
Switched to a new branch
'change_site'
$ vim test.txt
$ head -1 test.txt
www.w3cschool.cc
$ git commit
-am
'changed the site'
[change_site d7e7346] changed the site
1 file changed, 1 insertion(+), 1 deletion(-)
|
将修改的内容提交到 "change_site" 分支中。 现在,假如切换回 "master" 分支我们可以看内容恢复到我们修改前的,我们再次修改test.txt文件.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
$ git checkout master
Switched to branch
'master'
$ head -1 test.txt
w3cschool.cc
$ vim test.txt
$
cat
test.txt
w3cschool.cc
新增加一行
$ git
diff
diff
-
-git
a/test.txt b/test.txt
index 704cce7..f84c2a4 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
w3cschool.cc
+新增加一行
$ git commit
-am
'新增加一行'
[master 14b4dca] 新增加一行
1 file changed, 1 insertion(+)
|
现在这些改变已经记录到我的 "master" 分支了。接下来我们将 "change_site" 分支合并过来.
1
2
3
4
5
6
7
8
9
10
11
|
$ git merge change_site
Auto
-merging
test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$
cat
test.txt
<<<<<<< HEAD
w3cschool.cc
新增加一行
=======
www.w3cschool.cc
>>>>>>> change_site
|
我们将前一个分支合并到 "master" 分支,一个合并冲突就出现了,接下来我们需要手动去修改它.
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ vim test.txt
$
cat
test.txt
www.w3cschool.cc
新增加一行
$ git
diff
diff
-
-cc
test.txt
index f84c2a4,bccb7c2..0000000
--- a/test.txt
+++ b/test.txt
@@@ -1,2 -1,1 +1,2 @@@
- w3cschool.cc
+ www.w3cschool.cc
+新增加一行
|
在 Git 中,我们可以用 git add 要告诉 Git 文件冲突已经解决 。
1
2
3
4
5
6
7
|
$ git status
-s
UU test.txt
$ git add test.txt
$ git status
-s
M test.txt
$ git commit
[master 88afe0e] Merge branch
'change_site'
|
现在我们成功解决了合并中的冲突,并提交了结果.
最后此篇关于Git 教程之分支管理详解的文章就讲到这里了,如果你想了解更多关于Git 教程之分支管理详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在做一个关于代码学院的教程,我在这里收到一个错误,说“看起来你的函数没有返回‘唉,你没有资格获得信用卡。资本主义就是这样残酷。’”当收入参数为 75 时。”但是该字符串在控制台中返回(由于某种原因
我正在阅读 Go 的官方教程,但很难理解 Channel 和 Buffered Channels 之间的区别。教程的链接是 https://tour.golang.org/concurrency/2和
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
作为 iOS 新手,有大量书籍可以满足学习基础知识的需求。现在,我想转向一些高级阅读,例如 OAuth 和 SQLite 以及动态 API 派生的 TableView 等。您可以推荐任何资源吗? 最佳
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 8 年前。
前言 很多同学都知道,我们常见的CTF赛事除了解题赛之外,还有一种赛制叫AWD赛制。在这种赛制下,我们战队会拿到一个或多个服务器。服务器的连接方式通常是SSH链接,并且可能一个战队可能会同时有
Memcached是一个自由开源的,高性能,分布式内存键值对缓存系统 Memcached 是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象),这些数据可以是数据库调用、A
Perl 又名实用报表提取语言, 是 Practical Extraction and Report Language 的缩写 Perl 是由 拉里·沃尔(Larry Wall)于19
WSDL 是 Web Services Description Language 的缩写,翻译成中文就是网络服务描述语言 WSDL 是一门基于 XML 的语言,用于描述 Web Services 以
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
我正在寻找解释在 WPF 中创建自定义用户控件的教程。 我想要一个控件,它结合了一个文本 block 、一个文本框和一个启动通用文件打开对话框的按钮。我已经完成了布局,一切都连接好了。它有效,但它是三
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我接近 fourth page of the Django tutorial 的开始看着vote查看,最后是这样的: # Always return an HttpResponseRedirect a
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
是否有任何好的 Qt QSS 教程,或者在某个地方我可以看到样式小部件的示例?如果某处可用,我想要一些完整的引用。除了有关如何设置按钮或某些选项卡样式的小教程外,我找不到任何其他内容。 最佳答案 Qt
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是一名优秀的程序员,十分优秀!