共计 2328 个字符,预计需要花费 6 分钟才能阅读完成。
本篇文章会对 git branch
命令进行一次深度扫视,其内容还蕴含无关 git 分支模式的探讨。在很多古代版本控制系统内,分支都是一项必备性能。但在其余版本控制系统内,分支操作会相当低廉,耗费工夫精力和硬盘空间。在 Git 中,分支是每天开发过程中天然的一部分。Git 的分支仅仅是指向快照的一个指针。当新增一个性能或者批改一个 BUG 时——无论工作量大小——都能够派生一个分支来蕴含这些扭转。这既阻止了不稳固的代码合入主代码分支,也提供了一个在合并进主分支之前清理提交历史记录的机会。
上图所示是一个仓库中主分支之外有两个独立的开发分支,一个是一次小的性能开发,另一个则是蕴含大性能的长期开发分支。过后用独立分支进行开发时,不仅能让两个独立性能并行开发,并同时保障了 主分支
内不含有这两个独立分支中未开发实现的问题代码。
绝对于其余版本控制工具,Git 对于分支的实现轻量很多。其余工具看待分支时,是将文件从这个目录拷贝到那个目录。与此不同,Git 对分支信息的保留是通过对 commit 的援用。具体地说,一个分支仅示意一个一系列 commits 的顶部 commit 援用——并不是一堆 commits 的容器。应用对这个 commit 的援用,能够通过 commits 之间的先后关系来确定一个分支的所有内容。
它是如何工作的
一个分支代表一个独立的开发工作。分支的概念其实是对编辑、暂存、提交这一整个流程的形象。你能够将其设想为是在申请一整块全新工作区、暂存区,以及我的项目历史。新的 commit 记录仅会保留在以后分支的提交历史中,也就会在整个我的项目的历史记录中产生一个分叉。
git branch
命令容许对分支进行创立、列举、重命名以及删除的操作。它不能进行切换分支或者将分叉的 commit 记录扔到其余分支里。因而 git branch
总是与 git checkout
以及 git merge
命令独特呈现在应用场景中。
常见选项
git branch
列举仓库中的所有分支。此命令与 git branch --list
是同义词。
git branch <branch>
创立一个名为 <branch> 的分支。但此命令并不会主动检出新创建的分支。
git branch -d <branch>
删除指定分支。这是一个平安的操作,因为当分支中含有未合并的变更时,Git 会阻止这一次删除操作。
git branch -D <branch>
强制删除指定分支,即使其中含有未合并的变更。该命令常见于当开发者心愿永恒删除某一开发过程中的所有 commit。
git branch -m <branch>
对于以后分支重命名为 <branch>。
git branch -a
列举所有近程分支。
创立分支
对于所有分支仅是对于 commit 的指针这一概念的深刻理解是十分重要的。当你创立一个分支时,Git 所须要做的无非是创立一个新的指针,这一过程并不会对仓库进行任何批改。比方当你对如下图所示的仓库进行创立分支的操作:
而后执行上面的命令来创立一个分支:
git branch crazy-experiment
此时的仓库提交历史没有任何变动。你失去的仅仅是指向以后 commit 的一个新指针。
要留神此时你只是 创立
了这个分支。如需开始对新分支进行提交,要先抉择这个新的分支,应用 git checkout
命令,而后再应用规范流程 git add
、git commit
等命令。
创立近程分支
截至目前,咱们所展现的操作都只对于本地分支。git branch
命令也能够用于近程分支。为了操作近程分支,让咱们先为仓库增加一个近程仓库。
$ git remote add new-remote-repo https://bitbucket.com/user/repo.git
# Add remote repo to local repo config
$ git push <new-remote-repo> crazy-experiment~
# pushes the crazy-experiment branch to new-remote-repo
以上命令先增加了名为 new-remote-repo
的近程仓库,而后将本地分支 crazy-experiment
推向近程。
删除分支
一旦实现了以后分支的开发内容,并将其合并到主分支之后,就能够释怀的删除该分支,而不必放心会失落任何提交历史:
git branch -d crazy-experiment
然而,如果分支没有被合并过,以上命令则会输入上面这样的错误信息:
error: The branch 'crazy-experiment' is not fully merged. If you are sure you want to delete it, run 'git branch -D crazy-experiment'.
它在向你抗议:如此操作将会失落以后分支上的所有工作内容。如果你确定要删除该分支(比方以后分支的开发内容是一次失败的试验),你能够应用大写 D 的标记:
git branch -D crazy-experiment
这样删除操作后,无论什么情况都不会再呈现任何正告信息,因而请审慎应用。
下面的命令会删除该分支在本地仓库的拷贝。但近程仓库中依然有这个分支的内容。如需删除近程仓库上的这个分支,请应用以下命令
git push origin --delete crazy-experiment
或者
git push origin :crazy-experiment
这会将删除信号推送给近程仓库,触发近程仓库删除 crazy-experiment
分支。
总结
在这篇文档中,咱们探讨了 Git 的分支行为和 git branch
命令。git branch
命令次要用于创立、列举、重命名以及删除分支。为了对产生的分支进行操作,git branch
命令总是与其余命令一起应用,比方 git checkout
命令。