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:使用分支的主要内容,如果未能解决你的问题,请参考以下文章

text 使用git检出分支时出错

Git 检出其它分支的某个文件

Git 检出其它分支的某个文件

9.git本地检出远程分支

Git检出远程库的分支等相关操作

Git——如何从master检出分支dev并推送到远端?