git 批量删除git分支
在本系列的前两篇文章中,我们开始使用Git,并学习了如何克隆,修改,添加和删除 Git文件。 在第三部分中,我们将探讨Git分支以及为什么以及如何使用它。
将此树想象成一个Git仓库。 它有很多分支,长而短,起源于树干,也起源于其他分支。 假设树的树干代表仓库的主分支。 在本文中,我将使用master
作为“ master branch”的别名,即仓库的中央或第一个分支。 为简化起见,让我们假设master
节点是一个树干,其他分支都从其开始。
为什么我们在Git仓库中需要分支
- 如果要为项目创建新功能,则添加它可能会破坏您的工作代码,这是一个合理的机会。 对于您的项目的活跃用户来说,这将是非常糟糕的。 最好从原型开始,在决定是否将功能添加到仓库
master
以供其他人使用之前,您可能希望在另一个分支中进行大致设计,并查看其工作原理。 - 另一个可能更重要的原因是Git进行了协作。 如果每个人都在仓库的
master
分支上开始编程,这将引起很多混乱。 每个人都有不同的知识和经验(在编程语言和/或项目中); 有些人可能会编写错误/错误的代码,或者只是编写您在项目中可能不需要的代码/功能。 使用分支可以验证贡献并选择要添加到项目中的贡献。 (这假设您是该存储库的唯一所有者,并希望完全控制添加到该存储库中的代码。在实际的项目中,有多个所有者有权在存储库中合并代码。)
添加分支
让我们回到本系列的上一篇文章 ,看看Demo目录中的分支是什么样子。 如果您尚未这样做,请按照该文章中的说明从GitHub克隆存储库,并导航到Demo 。 运行以下命令:
pwd
git branch
ls -la
pwd
命令(代表当前的工作目录)报告您所在的目录(以便检查您是否在Demo中 ), git branch
列出了Demo存储库中计算机上的所有分支, ls -la
列出PWD中的所有文件。 现在,您的终端将如下所示:
分支主机上只有一个文件README.md
。 (请忽略其他列出的目录和文件。)
接下来,运行以下命令:
git status
git checkout -b myBranch
git status
第一个命令git status
报告您当前在branch master
,并且(如下面的终端屏幕截图所示)它是最新的origin/master
,这意味着您在分支的本地副本上拥有的所有文件master也出现在GitHub上。 这两个副本之间没有区别。 两个副本上的所有提交也相同。
下一个命令git checkout -b myBranch
, -b
告诉Git创建一个新分支并将其命名为myBranch
,然后checkout
将我们切换到新创建的分支。 输入第三行git status
,以验证您是否在刚创建的新分支上。
如下所示, git status
报告您位于分支myBranch
,没有要提交的内容。 这是因为既没有新文件,也没有现有文件的任何修改。
如果要查看分支的可视化表示,请运行命令gitk
。 如果计算机抱怨bash: gitk: command not found…
,则安装gitk
。 (有关安装说明,请参见您操作系统的文档。)
下图报告了我们在Demo中所做的事情:您的最后一次提交是Delete file.txt
,在此之前进行了3次提交。 当前提交以黄色点表示,先前提交以蓝色点表示,黄色点和Delete file.txt
之间的三个框告诉您每个分支的位置(即,每个分支上的最后一次提交是什么)。 由于刚刚创建myBranch
,它是在同一提交的master
和远程副本master
,即remotes/origin/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
的文件,并且newFile
当前untracked
。 这意味着尚未告知Git跟踪newFile
发生的任何更改。
下一步是将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,则可以在分支下拉列表中看到两个分支可供选择。
通过单击切换到myBranch
,您可以看到在该分支上添加的文件。
现在有两个不同的分支; 一个是master
,有一个文件README.md
,另一个是myBranch
,有两个文件。
现在您知道如何创建分支,让我们创建另一个分支。 输入以下命令:
git checkout master
git checkout -b myBranch2
touch newFile2
git add newFile2
git commit -m "Adding newFile2 to myBranch2"
git push origin myBranch2
我不会显示此终端输出,因为我想让您自己尝试一下,但是非常欢迎您查看GitHub上的存储库 。
删除分支
由于我们已经添加了两个分支,因此我们使用两步过程删除其中一个分支( myBranch
)。
1.删除分支的本地副本:由于您无法删除所在分支,因此请通过运行以下终端映像中显示的命令切换到master
分支(或您打算保留的另一个分支):
git branch
列出了可用的分支; checkout
更改到master
分支,而git branch -D myBranch
删除该分支。 再次运行git branch
以验证现在只有两个分支(而不是三个)。
2.从GitHub删除分支:通过运行以下命令删除myBranch
的远程副本:
git push origin :myBranch
冒号( :
)的分支名称前push
命令告诉GitHub上删除的分支。 另一个选择是:
git push -d origin myBranch
因为-d
(或--delete
)还告诉GitHub删除您的分支。
既然我们已经了解了使用Git分支的知识,那么在本系列的下一篇文章中,我们将研究如何获取和重新设置分支操作。 当您有多个贡献者的项目时,这些是必不可少的知识。
git 批量删除git分支