Git
整体流程
1 | 1. 注册公司的 gitea 账户 |
当你开始新项目时
1 | 1. 初始化新仓库 |
1 | 2. 设置签名 |
1 | 3. 状态查看 |
1 | 4. 添加修改至暂存区 |
1 | 5. 提交本地库 |
分支管理
什么是分支?
在版本控制过程中,使用多条线同时推进多个任务。
分支的好处
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
分支创建,切换,删除
git branch [分支名]
:创建分支git branch -a
:查看所有分支
git checkout [分支名]
:切换分支git checkout -b [分支名]
:创建并切换至新分支
git branch -D [分支名]
:删除分支
分支合并
合并分支需要有两步操作
git checkout [被合并分支名]
:切换到接受修改的分支(要被合并,增加新内容的分支)git merge [要合并过来的分支名]
:将另一个分支并入当前的分支中去。 Git 会自动以最佳方式将两个不同快照中独特的工作合并到一个新快照中去。
解决冲突
当两个要合并的分支同时修改到同一个文件的同一行时,执行合并操作的时候Git不知道到底保留哪一行是正确的,这个时候就会产生合并冲突,需要手动去修改。
当执行合并操作并且产生合并冲突时,需要手动去修改。
编辑文件,删除特殊符号
<<<<<<< DEAD
把文件修改到满意的程度,保存退出
git add [文件名]
git commit -m "日志信息"
:(此时 commit 一定不能带具体文件名)
项目管理
不像中心化的版本控制系统(客户端与服务端很不一样),Git 仓库基本上都是一致的,并且并可以同步他们。 这使得拥有多个远端仓库变得容易 —— 你可以拥有一些只读的仓库,另外的一些也可写的仓库。
当你需要与远端仓库同步的时候,不需要使用它详细的链接。Git 储存了你感兴趣的远端仓库的链接的别名或者昵称。 你可以使用 git remote
命令管理这个远端仓库列表。
git remote
:列出远端名git remote -v
:列出每个远端名的实际链接地址git remote add
:为你的项目添加一个新仓库git remote add [alias] [URL]
git remote rm
:删除现存的某个别名git remote rm [alias]
Git项目分支设计
一个好的项目需要有一个合理的项目分支管理
master
:主分支;经过本地测试的,开发分支,开发新功能的基准分支rc
:预发布分支;合并到master的测试分支,有bug就修复,然后合并回develop分支stable
:demo 分支,经过测试,给客户使用
分支与合并
- branch
- 分支创建,切换,删除
git branch [分支名]
:创建分支git branch -D [分支名]
:删除分支git branch -a
:查看分支git checkout [分支名]
:切换分支git checkout -b [分支名]
:创建并切换至新分支
查看历史记录
下面四种方式都可以查看历史提交记录,$ git reflog
这个指令较为常用,后面的版本切换一般都是使用这个命名查看即可。
git log
:提交人,提交id,提交时间,提交描述等(多屏显示控制方式: 空格向下翻页 、b 向上翻页 、q 退出 )git log --author
:之寻找某个作者的最近几次提交,大小写敏感git log --author=[作者] --online -[几次]
git log --since --before
:根据日期过滤提交记录git log --oneline --before={3.weeks.ago} --after={2022-08-10} --no-merges
:Git 项目中三周前且在八月十日之后的所有提交
git log --pretty=oneline
:简化版:提交ID,提交描述git log --oneline
:简化版:提交ID,提交描述git reflog
:简化版:提交ID,提交描述
比较文件差异
对比文件差异的方式有以下三种:
git diff [文件名]
:将工作区中的文件和暂存区进行比较git diff [本地库中历史版本] [文件名]
:将工作区中的文件和本地库历史记录比较git diff
:不带文件名比较多个文件
历史版本前进后退
Git
会记录我们提交的各个信息,并由 HEAD
指针来指向最新的提交,版本前进和后退的本质就是移动指针来实现。
版本前进后退有以下三种方式可实现
git reset --hard
分支号:基于索引值操作[推荐] (7bf0e31再图4.1中查看)git reset --hard HEAD^
:使用^符号:只能后退 (一个^表示后退一步,n 个表示后退 n 步)git reset --hard HEAD~n
:使用~符号:只能后退 (表示后退 n 步 )
reset 命令的3个参数
--soft 参数
: 仅仅在本地库移动 HEAD 指针--mixed 参数
:在本地库移动 HEAD 指针,重置暂存区--hard 参数
:在本地库移动 HEAD 指针、重置暂存区、重置工作区
删除文件找回
找回文件分两种情况:
git reset –hard [指针位置]:删除操作已经提交到本地库
git reset –hard HEAD:删除操作尚未提交到本地库
HEAD就指向是本地库的当前提交版本位置,上面的操作,就是将工作区和暂存区与本地库同步。
git tag 给历史记录中的某个重要的一点打上标签
比如说,我们想为我们的项目发布一个 1.0
版本,我们可以用 git tag -a v1.0
命令给最新一次提交打上(HEAD
)v1.0
的标签。
git tag -a [版本]
:打 taggit log --oneline --decorate --graph
: 我们可以看到我们的标签和备注了