英文:Kedar Vijay Kulkarni,翻译:Linux中国/Andy Song

linux.cn/article-9724-1.html

git checkout_git checkout_git checkout

在本系列的前两篇文章中,我们,学会如何。在这第三篇文章中,我将介绍 Git 分支,为何以及如何使用分支。

git checkout_git checkout_git checkout

不妨用树来描绘 Git 仓库。图中的树有很多分支,或长或短,或从树干延伸或从其它分支延伸。在这里,我们用树干比作仓库的 master 分支,其中master代指 ”master 分支”,是 Git 仓库的中心分支或第一个分支。为简单起见,我们假设master是树干,其它分支都是从该分支分出的。

为何在 Git 仓库中使用分支

使用分支的主要理由为:

创建分支

让我们回顾,看一下在我们的 Demo 目录中分支是怎样的。如果你没有完成上述操作,请按照文章中的指示从 GitHub 克隆代码并进入 Demo 目录。运行如下命令:

pwd

git branch

ls -la

pwd命令(是当前工作目录的英文缩写)返回当前你所处的目录(以便确认你在Demo目录中),git branch列出该项目在你主机上的全部分支,ls -la列出当前目录下的所有文件。你的终端输出类似于:

git checkout_git checkout_git checkout

在master分支中,只有一个文件README.md。(Git 会友好地忽略掉其它目录和文件。)

接下来,运行如下命令:

git status

git checkout -bmyBranch

git status

第一条命令git status告知你当前位于branch master,(就像在终端中看到的那样)它与origin/master处于同步状态,这意味着 master 分支的本地副本中的全部文件也出现在 GitHub 中。两份副本没有差异,所有的提交也是一致的。

下一条命令git checkout -b myBranch中的-b告知 Git 创建一个名为myBranch的新分支,然后checkout命令将我们切换到新创建的分支。运行第三条命令git status确保你已经位于刚创建的分支下。

如你所见,git status告知你当前处于myBranch分支,没有变更需要提交。这是因为我们既没有增加新文件,也没有修改已有文件。

git checkout_git checkout_git checkout

如果希望以可视化的方式查看分支,可以运行gitk命令。如果遇到报错bash: gitk: command not found…,请先安装gitk软件包(找到你操作系统对应的安装文档,以获得安装方式)。

(LCTT 译注:需要在有 X 服务器的终端运行gitk,否则会报错)

下图展示了我们在 Demo 项目中的所作所为:你最后一次提交(的对应信息)是Delete file.txt,在此之前有三次提交。当前的提交用黄点标注,之前的提交用蓝点标注,黄点和Delete file.txt之间的三个方块展示每个分支所在的位置(或者说每个分支中的最后一次提交的位置)。由于myBranch刚创建,提交状态与master分支及其对应的记为remotes/origin/master的远程master分支保持一致。(非常感谢来自 Red Hat 的Peter Savage让我知道gitk这个工具)

下面让我们在myBranch分支下创建一个新文件并观察终端输出。运行如下命令:

echo”Creating a newFile on myBranch” > newFile

cat newFile

git status

第一条命令中的echo创建了名为newFile的文件,接着cat newFile打印出文件内容,最后git status告知你我们myBranch分支的当前状态。在下面的终端输出中,Git 告知myBranch分支下有一个名为newFile的文件当前处于untracked状态。这表明我们没有让 Git 追踪发生在文件newFile上的变更。

git checkout_git checkout_git checkout

下一步是增加文件,提交变更并将newFile文件推送至myBranch分支(请回顾本系列上一篇文章获得更多细节)。

git add newFile

git commit -m”Adding newFile to myBranch”

git push origin myBranch

在上述命令中,push命令使用的分支参数为myBranch而不是master。Git 添加newFile并将变更推送到你 GitHub 账号下的 Demo 仓库中,告知你在 GitHub 上创建了一个与你本地副本分支myBranch一样的新分支。终端输出截图给出了运行命令的细节及命令输出。

当你访问 GitHub 时,在分支选择的下拉列表中可以发现两个可供选择的分支。

git checkout_git checkout_git checkout

点击myBranch切换到myBranch分支,你可以看到在此分支上新增的文件。

git checkout_git checkout_git checkout

截至目前,我们有两个分支:一个是master分支,只有一个README.md文件;另一个是myBranch分支,有两个文件。

你已经知道如何创建分支了,下面我们再创建一个分支。输入如下命令:

git checkout master

git checkout -bmyBranch2

touch newFile2

git add newFile2

git commit -m”Adding newFile2 to myBranch2″

git push origin myBranch2

我不再给出终端输出,需要你自己尝试,但你可以在GitHub 代码库中验证你的结果。

删除分支

由于我们增加了两个分支,下面删除其中的一个(myBranch),包括两步:

删除本地分支你不能删除正在操作的分支,故切换到master分支 (或其它你希望保留的分支),命令及终端输出如下:

git branch可以列出可用的分支,使用checkout切换到master分支,然后使用git branch -D myBranch删除该分支。再次运行git branch检查是否只剩下两个分支(而不是三个)。

删除 GitHub 上的分支使用如下命令删除myBranch的远程分支:

git push origin :myBranch

上面push命令中分支名称前面的冒号(:)告知 GitHub 删除分支。另一种写法为:

git push -dorigin myBranch

其中 -d (也可以用 –delete) 也用于告知 GitHub 删除你的分支。

我们学习了 Git 分支的使用,在本系列的下一篇文章中,我们将介绍如何执行 fetch 和 rebase 操作,对于多人同时的贡献的项目而言,这是很必须学会的。

系列回顾

【关于投稿】

如果大家有原创好文投稿,请直接给公号发送留言。

①留言格式:

【投稿】+《文章标题》+文章链接

②示例:

【投稿】《不要自称是程序员,我十多年的IT职场总结》:

③最后请附上您的个人简介哈~

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注