Content

Git基础学习之分支基本操作详解(git基础教程)不看后悔

文章摘要

### Git 分支操作总结 Git 提供了丰富的分支操作命令,帮助开发者管理和切换代码分支。以下是基本操作的简要总结: 1. **创建分支** 使用 `git branch` 命令创建新分支,例如: ```bash git branch testing ``` 该命令会生成一个可移动的分支指针,指向本地提交记录中的某个提交。 2. **查看分支列表** 使用 `git branch` 或 `git branch --v` 命令列出所有分支及其状态,例如: ```bash git branch ``` 输出显示当前分支及其历史提交。 3. **切换分支** 使用 `git checkout` 命令将当前分支切换到指定分支,例如: ```bash git checkout testing ``` 该操作会将工作指针更新为指定分支,同时修改本地提交记录。 4. **查看所有分支的最后一次提交** 使用 `git branch -v` 命令查看所有分支及其提交记录,例如: ```bash git branch -v ``` 输出显示所有分支及其提交状态。 5. **删除分支** 使用 `git branch -d` 或 `git branch -D` 命令删除指定分支,例如: ```bash git branch -D testing ``` 注意:删除分支前确认是否已合并,否则可能无法删除。 通过这些操作,开发者可以高效地管理和切换代码分支,保持代码的可追溯性和可维护性。


目录1、创建分支(1)创建分支(2)图示理解2、查看分支列表3、分支切换4、查看所有分支的最后一个提交5、删除分支

Git 是怎么创建新分支的呢?

很简单,就是要创建一个可以移动的新的指针。

比如,创建一个分支, 你需要使用命令:。

示例:

# 1.查看本地版本库历史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git log –oneline b97ccfd (HEAD -> master) 第3次提交,新增内容:branch test v3 f72a9fe 第2次提交,新增内容:branch test v2 fa2439a 第1次提交,新增readme.txt文件 # 2.新建分支testing L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch testing # 3.再次查看本地版本库历史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git log –oneline b97ccfd (HEAD -> master, testing) 第3次提交,新增内容:branch test v3 f72a9fe 第2次提交,新增内容:branch test v2 fa2439a 第1次提交,新增readme.txt文件

可以看到,说明本地版本库中,已经多了一个分支。

如上操作,会在当前所在的提交对象上创建一个新的指针。

如下图:

那么Git 又是怎么知道当前在哪一个分支上呢? 也很简单,它有一个名为  的特殊指针,指向当前所在的本地分支上。

在本例中,是仍然在  分支上。 因为  命令仅仅 创建 一个新分支,并不会自动切换到新分支中去。

因为上面日志信息:,也说明指针指向的是分支。

如下图所示:

如图所示,当前  和  分支均指向校验和以  开头的提交对象。

执行命令:。不用加任何参数。

如下图:

该命令会列出当前本地版本库中存在的所有分支,且当前正在工作的分支前会显示。

和命令行路径后面中的内容相对应。

要切换到一个已存在的分支,你需要使用  命令。

我们现在切换到新创建的  分支去:

# 1.切换到testing分支上 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git checkout testing Switched to branch ‘testing’ # 提示:切换到分支“testing” # 2.查看当前正在工作的分支。 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) # 这里 $ git branch master * testing # 这里

现在  就指向  分支了。(即: 会指向当前所在的分支)

提示:

在创建分支的时候,添加选项,可以直接切换到新创建的分支上。

例如:

该命令等价于如下两条命令:

:创建分支。:切换分支。

使用命令可以查看,所有分支的最后一次提交。

我们在 分支修改文件,再进行一次提交。

# 1.查看当前工作的分支 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git branch master * testing # 2.修改文件,提交新版本 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ echo “branch test v4” >> readme.txt L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git commit -a -m ‘第4次提交,新增内容:branch test v4’ warning: LF will be replaced by CRLF in readme.txt. The file will have its original line endings in your working directory [testing 25f0827] 第4次提交,新增内容:branch test v4 1 file changed, 1 insertion(+) # 3.查看所有分支的最后一次提价 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git branch -v master b97ccfd 第3次提交,新增内容:branch test v3 * testing 25f0827 第4次提交,新增内容:branch test v4 # 4.查看版本库历史提交记录 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git log –graph –oneline * 25f0827 (HEAD -> testing) 第4次提交,新增内容:branch test v4 * b97ccfd (master) 第3次提交,新增内容:branch test v3 * f72a9fe 第2次提交,新增内容:branch test v2 * fa2439a 第1次提交,新增readme.txt文件

通过上面的日志信息,此时  指针的状态如下图:

可以看到  随着在 分支上的提交操作,自动向前移动。

使用命令:。

但是要注意的是:若要删除某分支,必须要保证当前工作的分支,不能是该分支。

这个时候我们需要先切换回分支。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (testing) $ git checkout master Switched to branch ‘master’ L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch * master testing

此时  指针的状态如下图:

image

说明:这条命令做了两件事。

是使 HEAD 指回  分支。

是将工作目录中文件,恢复成  分支所指向提交的快照内容。

在切换分支时,一定要注意你工作目录里的文件会被改变,你的工作目录会恢复到该分支最后一次提交时的样子。如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。(下面分支实战中有详细说明)

也就是说,你现在做修改的话,项目将始于  分支版本。 本质上来讲,这就是忽略 分支所做的修改,以便于向另一个方向进行开发。

继续我们开始删除  分支。

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch -d testing error: The branch ‘testing’ is not fully merged. If you are sure you want to delete it, run ‘git branch -D testing’.

提示你:分支“testing”没有合并到主分支,如果确定要删除它,请运行命令。。

所以我们使用选项删除  分支。

# 1.删除分支 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch -D testing Deleted branch testing (was 25f0827). # 2.查看本地库中的分支,就只有master分支了 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git branch * master # 3.查看提交历史记录 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git log –graph –oneline * b97ccfd (HEAD -> master) 第3次提交,新增内容:branch test v3 * f72a9fe 第2次提交,新增内容:branch test v2 * fa2439a 第1次提交,新增readme.txt文件 # 可以看到对testing分支的修改,只要没有合并,对master分支是没有影响的。 # 4.查看可回退的提交历史记录 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git reflog b97ccfd (HEAD -> master) HEAD@{0}: checkout: moving from testing to master 25f0827 HEAD@{1}: commit: 第4次提交,新增内容:branch test v4 b97ccfd (HEAD -> master) HEAD@{2}: checkout: moving from master to testing b97ccfd (HEAD -> master) HEAD@{3}: commit: 第3次提交,新增内容:branch test v3 f72a9fe HEAD@{4}: commit: 第2次提交,新增内容:branch test v2 fa2439a HEAD@{5}: commit (initial): 第1次提交,新增readme.txt文件 # 可以看到只要HEAD移动过,所有历史轨迹都会保留在Git版本库中。 # (也就是.git/objects目录中的文件只能无限的增多,存储了就不会删除掉。)

提示:合并后的分支不仅无用,它的存在还会引起不必要的麻烦,一般都会删除无用的分支。

以上就是Git基础学习之分支基本操作详解的详细内容,更多关于Git分支基本操作的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:git分支的创建、切换、合并及删除操作小结git分支(branch)操作相关命令及分支命令的使用Git常用场景使用之分支操作Git基础学习之文件删除操作命令详解Git基础学习之标签tag的使用详解Git基础学习之tag标签操作详解