git:使用分支
Posted it_xiangqiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git:使用分支相关的知识,希望对你有一定的参考价值。
使用分支
- 什么是分支
- 分离的头部
- 列出可用的分支
- 创建新分支
- 检出分支
- 重命名分支
- 删除分支
- 将分支的更改推送到远程存储库
- 使用未跟踪的文件切换分支
- 切换具有未提交更改的分支
- 分支之间的差异
什么是分支
Git 允许您创建分支。分支是指向提交的命名指针。您可以彼此独立地在不同的分支上工作。默认分支通常称为主分支。
Git 中的分支指针为 41 个字节大、40 个字节的字符和一个附加的新行字符。因此,在Git中创建分支在资源消耗方面非常快速且便宜。Git 鼓励定期使用分支。
如果您决定在某个分支上工作,则可以签出(或切换到)此分支。这意味着 Git 使用分支指向的提交中的文件版本填充工作树,并将 HEAD 指针移动到新分支。
HEAD 是一个符号引用,通常指向当前已检出的分支。
分离的头部
如果您直接签出提交或标记而不是分支,则处于所谓的分离 HEAD 模式。如果在此模式下提交更改,则没有指向此提交的分支。
不建议在此模式下创建新提交,因为此类提交在分支上不可见,并且您可能不容易找到它们。分离的 HEAD 模式旨在使查看某个提交引用的文件变得容易。
列出可用的分支
该命令列出所有本地分支。当前活动的分支标有 。git branch*
# lists available branches
如果要查看所有分支(包括远程跟踪分支),请使用 for 命令。-agit branch
# lists all branches including the remote branches
git branch -a
该选项列出了有关分支的详细信息。-v
要列出远程存储库中的分支,请使用以下示例中演示的命令。git branch -r
# lists branches in the remote repositories
git branch -r
创建新分支
您可以通过该命令创建新分支。此命令允许您指定分支指针原始指向的提交(提交 ID、标记、远程或本地分支)。如果未指定,则使用 HEAD 参考点创建新分支的提交。git branch [newname]
# syntax: git branch <name> <hash>
# <hash>
检出分支
要开始在分支中工作,您必须签出分支。如果检出一个分支,HEAD 指针将移动到此分支中的最后一个提交,并且工作树中的文件将设置为此提交的状态。
以下命令演示如何切换到名为 test 的分支,在此分支中执行一些更改,然后切换回名为 master 的分支。
# switch to your new
git checkout testing
# do some changes
echo "Cool new feature in this branch" > test01
git commit -a -m "new feature"
# switch to the master branch
git checkout master
# check that the content of
# the test01 file is the old one
要创建分支并同时切换到该分支,可以将该命令与参数一起使用。git checkout-b
# create branch and switch
git checkout -b bugreport12
# creates a new
# without the last commit
git checkout -b mybranch master~1
重命名分支
可以使用以下命令重命名分支。
# rename branch
git branch -m [old_name] [new_name]
删除分支
要删除不再需要的分支,可以使用以下命令。您可能会收到一条错误消息,指出如果分步执行前面的示例,则存在未提交的更改。使用强制删除(大写)无论如何都要删除它。-D
# delete branch testing
git branch -d testing
# force delete
git branch -D testing
# check if
将分支的更改推送到远程存储库
您可以通过指定目标分支将分支中的更改推送到远程存储库。这将在远程存储库中创建目标分支(如果该分支尚不存在)。
如果未指定远程存储库,则 将 用作缺省存储库origin
# push current branch to a branch called "testing" to remote repository
git push origin testing
# switch to the testing branch
git checkout testing
# some changes
echo "News for you" > test01
git commit -a -m "new feature in branch"
# push current HEAD to origin
git push
# make new
git branch anewbranch
# some changes
echo "More news for you" >> test01
git commit -a -m "a new commit in a feature branch"
# push anewbranch to the master in the origin
git push origin anewbranch:master
# get the changes into your local master
通过这种方式,您可以决定要将哪些分支推送到其他存储库,哪些应该是本地分支。
使用未跟踪的文件切换分支
未跟踪的文件(从不添加到暂存区域)与任何分支无关。它们仅存在于工作树中,在提交到 Git 存储库之前,Git 会忽略它们。这允许您在任何时间点为未暂存和未提交的更改创建分支。
切换具有未提交更改的分支
与未跟踪的文件类似,您可以使用尚未提交的未暂存或暂存修改切换分支。
如果修改与分支中的文件不冲突,则可以切换分支。
如果 Git 需要在分支签出期间修改已更改的文件,则签出将失败并显示错误。这可以避免丢失文件中的更改。checkout conflict
在这种情况下,必须提交、还原或隐藏更改。您也可以始终基于当前 HEAD 创建新分支。
分支之间的差异
要查看两个分支之间的差异,可以使用以下命令。
# shows the differences between
# current head of master and
您可以使用提交范围。例如,如果将名为 your_branch 的分支与主分支进行比较,则以下命令将显示your_branch和主分支中由于这些分支发散而发生的变化。
# shows the differences in your
# branch based on the common
# ancestor for
git diff master...your_branch
以上是关于git:使用分支的主要内容,如果未能解决你的问题,请参考以下文章