git知识总结
- Date:2024-07-03
- Time:15:19
- Subject: CS
- Tags: #git
[[2024-07]]
交叉内容
[[git命令#- Date 2024-07-03]]
git工作区域与文件状态
三个区域
工作区
- 工作区提交后回到暂存区,确实就是文件管理器看到的,编辑的区域,正常使用(操作)的区域
暂存区
- 保存即将提交到git仓库的内容,临时存储
- 可以先修改一部分,放到暂存区钟,再统一提交commit
本地仓库
- git init 的仓库,保存了项目历史
文件状态
- 未跟踪,新创建,git还没管理,
- 未修改,管理起来的,但是没有修改的文件
- 已修改,已经修改了的,没暂存
- 已暂存,放到暂存区的文件
.gitignore 忽略文件
- 把文件加入到里面,那么就会忽略这个文件
- 假如已经加到版本库中,那这个文件就不起作用了,需要先从版本库删除中删除
git rm --catched
本地不删除,但是暂存和版本库都删除
1 | *.txt , *.xls 表示过滤某种类型的文件 |
分支
- 十分重要
git branch <分支名>
创建分支git checkout <分支名>
切换到分支(恢复文件),可能会有歧义git switch <分支名>
专门用来切换分支git merge <被合并的分支1> <目标分支2>
会将1合并到2中git branch -d <删除的分支>
合并后可以删除,如果没合并就想删除,那得用-D
冲突解决
- 如果两个分支对同一行都修改了,那就不知道怎么修改了,会有冲突;但是只有一者修改了,那就可以合并
git merge --abort
终止合并
分支命名
- feat——feature,功能开发
- main——分支,稳定版本代码,可以随时发布的,不能直接修改,得用merge来改,用tag标记版本号
- hotfix——问题修复分支,用于合并
- develop——开发版本
变基rebase
- 嫁接移植的感觉
- 先switch到要移动的分支dev上,然后用
git rebawse <基的名字,branch名字>
,然后就把dev移动到main上了, - 优点:不会有额外提交记录,线性的,直观简洁
- 缺点:会改变提交记录,改变branch out的节点,避免在共享分支上使用
[!note]
在使用 Git 的rebase
时,如果两个不同的分支对同一行代码进行了不同的修改,也会像merge那样产生冲突,这种冲突需要手动解决。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chris!