Git分支

2020-06-19  本文已影响0人  你weixiao的时候很美
一: 分支的简介

git保存的不是文件的变化或者差异,而是一系列文件的快照。

1.提交

在提交的时候,git会保存一个提交对象。

提交对象包含:

树对象(树形的结构)包含:

git提交.png
2.分支

分支的本质是指向提交对象可变指针,仅仅包含了它所指向的提交对象的校验和。
每次提交,可变指针会移动,指向最新的提交对象。

2.1 创建分支
创建分支就是创建一个可移动的新的指针

git branch [branchName]  只创建了一个分支,而不切换过去,不常用

2.2 分支切换和当前分支
Git有一个名为HEAD的特殊指针,它当前指向的分支就是当前分支。

分支切换就是HEAD指针从一个分支指向另一个分支。
切换分支会修改工作目录,git会自动增删改文件以确保工作目录和切换到的分支一模一样。

git  checkout [branchName]  切换分支

创建并切换到新分支,常用。

git  checkout -b  [newBranchName]
3.分支的合并

3.1 Fast-forward合并:

3.2三方合并:

3.3冲突
如果在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们。

此时 Git 做了合并,但是没有自动地创建一个新的合并提交 (这里很重要),此时的状态是合并了代码,但是没有合并干净,也没有提交。

此时需要解决冲突,标记已经解决(add), 提交(commit)。

二:远程分支

1 定义:远程跟踪分支是远程分支状态的引用。

2 抓取服务器仓库数据,并更新本地仓库。 移动远程跟踪分支指针指向新的位置。

git fetch origin 

git fetch 只是抓取了远程仓库数据并更新了本地仓库, 如果远程仓库有新的远程分支origin/branch_fix,在本地并没有创建一个新的本地分支branch_fix,只有一个不可修改的 远程跟踪分支指针origin/branch_fix。

3 推送到某个本地分支 到远程服务器某个分支 不常用

git push origin branch_fix  和下边一句含义相同
git push origin refs/heads/branch_fix : refs/heads/branch_fix

git push origin  [localBranchName] : [remoteBranchName]

4.删除远程分支

git push origin --delete  [branchName]
三:跟踪分支 最常用

1.定义 : 从一个远程跟踪分支检出一个本地分支会自动创建所谓的“跟踪分支”

当克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master 的 master 分支

2.从远程跟踪分支检出本地跟踪分支

git checkout -b branch_fix  origin/branch_fix
git checkout --track  origin/branch_fix

3.设置已有的本地分支跟踪一个远程分支

git branch -u origin/branch_fix
git branch --set-upstream-to origin/branch_fix
上一篇下一篇

猜你喜欢

热点阅读