当前位置: 首页 > 科技观察

Git分支简介:为什么以及如何使用分支?

时间:2023-03-11 20:21:08 科技观察

在Git入门系列的第三部分中,让我们学习如何添加和删除Git分支。在本系列的前两篇文章中,我们开始使用Git并学习了如何克隆项目、修改、添加和删除内容。在这第三篇文章中,我将介绍Git分支、为什么以及如何使用它们。树枝可能希望使用树来描述Git存储库。图中的树有很多枝条,或长或短,从树干或其他树枝上伸出来。这里,我们用trunk来比喻仓库的master分支,master指的是“master分支”,也就是Git仓库的中央分支或第一个分支。为简单起见,我们假设master是所有其他分支的分支分支的主干。在Git仓库中使用分支的主要原因是:如果你想给你的项目添加新的特性,但很可能会影响当前的工作代码。对于该项目的活跃用户来说,这是个坏消息。与其在其他人正在使用的master分支上添加功能,不如在repository的其他分支中更改代码,下面给出具体工作方法。更重要的是,Git是为协作而设计的。如果每个人都在您的存储库的master分支上工作,可能会造成很多混乱。编程语言或项目的知识和经验因人而异;有些人可能会编写带有错误或缺陷的代码,或者您认为不适合该项目的代码。使用分支允许您查看其他人的贡献并选择合适的添加到项目中。(这里假设你是代码库的唯一所有者,并且希望对添加到项目中的代码有完全的控制权。在实际项目中,代码库有多个所有者,具有合并代码的权限)创建一个分支让我们回顾一下这个在在本系列的最后一篇文章中,看看我们的Demo目录中的分支是什么样子的。如果您还没有完成上述操作,请按照文章中的说明从GitHub上克隆代码并进入Demo目录。运行如下命令:pwdgitbranchls-lapwd命令(是当前工作目录的英文缩写)返回你当前所在的目录(确认你在Demo目录下),gitbranch列出项目的所有分支您的主机ls-la列出当前目录中的所有文件。您的终端输出如下所示:终端输出在master分支中,只有一个文件README.md。(Git会友好地忽略其他目录和文件。)接下来,运行以下命令:gitstatusgitcheckout-bmyBranch这意味着你本地master分支副本中的所有文件也出现在GitHub中。两个副本之间没有差异,所有的提交也是一致的。下一个命令gitcheckout-bmyBranch中的-b告诉Git创建一个名为myBranch的新分支,checkout命令将我们切换到新创建的分支。运行第三个命令gitstatus以确保你在刚刚创建的分支上。如您所见,gitstatus告诉您当前在myBranch分支上并且没有要提交的更改。这是因为我们既没有添加新文件也没有修改现有文件。终端输出如果你想以可视化的方式看到分支,你可以运行gitk命令。如果遇到错误bash:gitk:commandnotfound...,请先安装gitk包(找到你操作系统对应的安装文档获取安装方法)。(LCTT译注:需要在有X服务器的终端上运行gitk,否则会报错)下图是我们在Demo工程中所做的:你最后一次提交(对应的信息)是Deletefile.txt,在在此之前有3次提交。当前提交用黄点标记,上一次提交用蓝点标记,黄点和Deletefile.txt之间的三个方块表示每个分支所在的位置(或每个分支中最后一次提交的位置).由于myBranch是刚刚创建的,commit状态与master分支一致,对应的远程master分支表示为remotes/origin/master。(非常感谢RedHat的PeterSavage让我知道了工具gitk)Gitk输出现在让我们在myBranch分支下创建一个新文件并观察终端输出。运行以下命令:echo"CreatinganewFileonmyBranch">newFilecatnewFilegitstatus***命令中的echo创建一个名为newFile的文件,然后catnewFile打印出文件内容,***gitstatus告诉你我们的myBranch分支的当前状态。在下面的终端输出中,Git告诉我分支myBranch下名为newFile的文件当前未被跟踪。这表明我们没有告诉Git跟踪文件newFile发生的更改。终端输出中的下一步是添加文件、提交更改并将newFile文件推送到myBranch分支(有关更多详细信息,请查看本系列的上一篇文章)。gitaddnewFilegitcommit-m"AddingnewFiletomyBranch"gitpushoriginmyBranch上面命令中push命令使用的branch参数是myBranch而不是master。Git添加newFile并将更改推送到您的GitHub帐户下的Demo存储库,告诉您在GitHub上创建了一个新分支,该分支与您本地的副本分支myBranch相同。终端输出的屏幕截图给出了命令运行和命令输出的详细信息。终端输出当你访问GitHub时,你可以在分支选择下拉列表中找到两个分支可供选择。GitHub点击myBranch切换到myBranch分支,可以在该分支上看到新增的文件。GitHub目前我们有两个分支:一个是master分支,只有一个README.md文件;另一个是myBranch分支,它有两个文件。现在您知道如何创建分支,让我们创建另一个分支。输入以下命令:gitcheckoutmastergitcheckout-bmyBranch2touchnewFile2gitaddnewFile2gitcommit-m"AddingnewFile2tomyBranch2"gitpushoriginmyBranch2的结果。删除分支由于我们已经添加了两个分支,下面删除其中一个(myBranch),包括两个步骤:删除本地分支你不能删除你正在工作的分支,所以切换到master分支(或者你想保留的其他分支),command并且终端输出如下:gitbranch可以列出可用的分支,使用checkout切换到master分支,然后使用gitbranch-DmyBranch删除该分支。再次运行gitbranch以检查是否只剩下两个分支(而不是三个)。删除GitHub上的分支使用以下命令删除myBranch的远程分支:gitpushorigin:myBranch终端输出上面push命令中分支名称前的冒号(:)告诉GitHub删除该分支。另一种写法是:gitpush-doriginmyBranch其中-d(你也可以用--delete)也是用来告诉GitHub删除你的分支。我们已经学习了如何使用Git分支。在本系列的下一篇文章中,我们将介绍如何执行fetch和rebase操作。这对于多人同时贡献的项目来说是必须的。