git:使用分支

与天地兮比寿,与日月兮齐光。这篇文章主要讲述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:使用分支】


    推荐阅读