Git分支高级管理[四]

简介: 标签(linux): git笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流切换分支git checkout撤销对文件的修改git checkout --file.extcheckout一个文件和带文件路径git reset非常像,除了它更改的是工作目录而不是缓存区。

标签(linux): git

笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流

切换分支

git checkout

撤销对文件的修改

git checkout --file.ext
  • checkout一个文件和带文件路径git reset非常像,除了它更改的是工作目录而不是缓存区。不像提交层面的checkout命令,它不会移动HEAD引用,也就是你不会切换到别的分支上去
  • 如果你缓存并且提交了checkout的文件,它具备将某个文件回撤到之前版本的效果。注意它撤销了这个文件后面所有的更改,而git revert命令只撤销某个特定提交的更改
    img_84af65497572f685e4ce071879a61198.png

img_cf8148bcb9ff5391cc6887566c0d7cb5.png

撤销对文件的修改

[root@git test]# git status 
On branch about
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")
[root@git test]# git checkout -- index.html
[root@git test]# git status 
On branch about
nothing to commit, working directory clean

git reset

  • --soft 缓存区和工作目录都不会被改变
  • --mixed 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
  • --hard 缓存区和工作目录都同步到你指定的提交
    虽然在调用时加上 --hard选项可以令git reset成为一个危险的命令(译注:可能导致工作目录中所有当前进度丢失!),但本例中工作目录内的文件并不会被修改。不加选项地调用git reset并不危险——它只会修改暂存区域

git reset HEAD~2

img_ba4324b7067307dc2e2bdd4440a39030.png

执行命令后:
img_b02932f45887f747507d96dfd7618a11.png

reset命令的影响

img_288b88db8334cb7f6f7e4e321fb16219.png

img_288b88db8334cb7f6f7e4e321fb16219.png

文件层操作

  • 当检测到文件路径时,git reset将缓存区同步到你指定的那个提交。比如,下面这个命令会将倒数第二个提交中的foo.py加入到缓存区中,供下一个提交使用。
  • git reset HEAD~2 foo.py
  • 运行git reset HEAD foo.py 会将当前的foo.py从缓存区中移除出去,而不会影响工作目录中对foo.py的更改
  • --soft、 --mixed和--hard对文件层面的git reset毫无作用,因为缓存区中的文件一定会变化,而工作目录中的文件一定不变。

reflog

  • git reflog命令分析你所有分支的头指针的日志来查找出你在重写历史上可能丢失的提交

总结

命令 作用域 常用情景
git reset 提交层面 版本回滚,,在私有分支上舍弃一些没有提交的更改
git reset 文件层面 将文件从缓存区中移除
git checkout 提交层面 切换分支或查看旧版本
git checkout 文件层面 舍弃工作目录中的更改
git revert 提交层面 在公共分支上回滚更改
git revert 文件层面 (没有)

img_6db8898e857be3101ebcdb4942dd4523.png

目录
相关文章
|
28天前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
97 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
1月前
|
开发工具 git 开发者
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
本文通过具体操作和截图,详细讲解了如何在Git中解决分支冲突问题,包括如何识别冲突、手动解决冲突代码、提交合并后的代码,以及推送到远程分支。
250 3
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
|
2月前
|
缓存 开发工具 git
Git创建分支以及合并分支
在Git中,创建分支使用`git branch [branch_name]`,切换分支使用`git checkout [branch_name]`。修改文件后,通过`git add [file]`添加到暂存区,然后`git commit`提交到本地仓库。如果是新建分支的第一次推送,使用`git push origin [branch_name]`推送到远程仓库,之后可以简化为`git push`。合并分支时,使用`git merge [branch_name]`将指定分支的更改合并到当前分支。
52 2
Git创建分支以及合并分支
|
29天前
|
开发工具 git
Git分支使用总结
Git分支使用总结
32 1
|
2月前
|
存储 Linux 开发工具
Git基础命令,分支,标签的使用【快速入门Git】
本文详细介绍了Git版本控制系统的基础概念和常用命令,包括工作区、暂存区和版本库的区别,文件状态的变化,以及如何进行文件的添加、提交、查看状态、重命名、删除、查看提交历史、远程仓库操作和分支管理,还涉及了Git标签的创建和删除,旨在帮助读者快速入门Git。
Git基础命令,分支,标签的使用【快速入门Git】
|
2月前
|
测试技术 开发工具 git
掌握 Git 分支策略:提升你的版本控制技能
在现代软件开发中,版本控制至关重要,Git 作为最流行的分布式版本控制系统,其分支管理策略对于高效协作和代码维护尤为重要。本文介绍了几种常用的 Git 分支策略,包括主线开发模型、功能分支模型、Gitflow 工作流和 Forking 工作流,并探讨了如何根据项目需求选择合适的分支模型。通过保持 `master` 分支稳定、及时合并清理分支、使用命名规范、利用 Pull Request 进行代码审查及自动化测试等最佳实践,可以显著提升团队协作效率和软件质量。掌握这些策略将帮助开发者更好地管理代码库,加快开发流程。
|
3月前
|
开发工具 git 开发者
|
3月前
|
项目管理 开发工具 git
|
3月前
|
存储 小程序 安全
【技巧】git stash用的好,切换分支随便搞
本文详细介绍了 Git 中的 `git stash` 命令,帮助你在切换分支时临时保存未提交的更改。通过实际操作示例,展示了如何使用 `git stash` 的各种命令,如 `save`、`list`、`apply` 等。无论你是初学者还是有一定经验的开发者,都能从中受益。
62 0
【技巧】git stash用的好,切换分支随便搞
|
3月前
|
Shell 开发工具 git