Awesome-Git
Awesome-Git
Git是一个广泛使用的版本控制系统,可以让开发者轻松地在不同分支上工作并将其合并到主分支上。除此之外,Git还有很多其他的功能和工具,例如代码审查和历史记录查看等。Git已经成为现代软件开发中不可或缺的工具,无论是个人项目还是大型团队,都可以从中受益。
Awesome-Git
Git是一个广泛使用的版本控制系统,它是由Linus Torvalds在2005年开发的。Git的目的是为了帮助开发者更有效地管理和协作开发代码。Git的优势在于它是分布式的,意味着每个开发者都有一个完整的代码库,并且可以在本地进行版本控制和修改。这样可以避免出现单点故障,使得团队能够更加高效地协作。Git还具有强大的分支和合并功能,可以让开发者轻松地在不同分支上工作并将其合并到主分支上。除此之外,Git还有很多其他的功能和工具,例如代码审查和历史记录查看等。Git已经成为现代软件开发中不可或缺的工具,无论是个人项目还是大型团队,都可以从中受益。
历史回顾
在以前的开发版本中,我们是在单版本的情况下进行的开发。每次只需要在上一个发布中,从发布分支中拉取最新的代码即可。但是在多版本并行的情况下,原有方式已经不能够满足开发的需求。
如何进行新的版本管理
分支管理
当有两个版本需要同时进行开发时,并且有a,b, c都分别需要对这两个版本进行开发时,并且版本中含有多个功能时。
基本流程
| git checkout release-X git pull git checkout -b 版本号 git push origin/版本号 git checkout -b 功能名称 git push origin/功能名称 git checkout -b 功能名称-A(user) 编写功能 git push origin/功能名称-A(user) 在代码仓库提交pr指定给该开发相同功能的开发者 处理冲突,pr合并 | 切换分支到上一个版本的最新发布代码 确保代码为最新 创建版本号 推送版本号到远程分支 切换分支到对应功能名称上 推送本分支到远程 切换分支到功能a-自己的分支上 推送自己的分支到远程 合并代码/code review |
|---|
第7条和绿色部分操作可以省略,遇到冲突只能按照 谁遇到谁解决 的方式进行处理
至此一个功能已经开发完毕,本地测试无误后,需要对功能进行测试。
进行测试
我们会有一个测试分支(test),这个分支将会用于测试环境的服务,此分支可用于多个功能的测试。操作如下
到代码仓库中,选择合并请求 (pr),添加对应的通知对象,选择功能分支合并到测试分支,通过即可,流水线那边配置了代码合并后自动运行流水线,降低打包切换分支的负担。
版本上线
到达版本日期时,到这里版本上线需要合并的分支 填入需要合并的分支,后端工程师会按照填表的内容进行合并到对应版本。随后进行新版本发布
hotfix
对于热修,需要从上次发版的节点,拉取对应的代码,修改后,使用pr的方式合并。当下一次发版时,总是默认需要用旧的版本合并到新的版本
对于hotifx的测试应该合并到test分支。
代码提交到了错误的分支如何处理(这个部分可能需要演示下)
暂未推送到远程分支
git log 找到对应commit id
git reset commit id --hard
git add 对应代码
git commit -m "提交信息"
git push
git stash
git checkout 对应代码的分支
git stash pop
git commit -m "提交信息"
已经推送到远程分支
git log 找到对应commit id
git reset commit id --hard
git stash
git pull
移除相关代码
Git add
Git commit
git checkout 对应的分支
Git stash pop
将不需要代码移除
Git add
Git commit
危险操作/禁止的操作
Git reset --hard xx && git push --force
如何没法避免进行以上操作,请务必结伴编程
后续讨论
是否需要引入 tag ?
git fetch-rebase flow流程
日常命令
查看当前分支状态,不确定就每次操作后就用此命令看看
git status
本地有改动,又需要从远程拉取最新
git stash
git fetch -pP
git rebase
Bash
# 冲突解决
git rebase --abort 会回到rebase操作之前的状态,之前的提交的不会丢弃;
git rebase --skip 则会将引起冲突的commits丢弃掉;
git rebase --continue 用于修复冲突,如果已经解决了冲突,git add 后再执行此命令,继续rebase
git stash pop
提交代码到本地待提交仓库
git add .
Bash
# 提交指定文件到本地仓库,可以空格多个
git add {filename1}
对本地待提交仓库的代码做备注
git commit -m "remark"
将本地待提交仓库代码推到远程仓库
git push
举例:从远程已有的master分支拉一个自己开发分支
切换到master分支
git checkout master
将本地master分支从远程拉取最新
git stash
git fetch -p
git rebase origin/master
git stash pop
新建本地分支feature/wiki,并且从master分支复制,创建成功后会自动切换到新分支feature/wiki
git checkout -b feature/wiki
将本地新分支推送到远程,使远程也有此分支
git push origin feature/wiki
本地分支与远程分支绑定
git branch --set-upstream-to origin/feature/wiki
查看本地分支与远程分支关联情况
git branch -vv
小技巧
查看本地分支
git branch
Bash
# 查看创建的远程分支
git branch -r
本地有修改,对比改动了哪些
git diff
本地的修改在add到本地待提交仓库之前,回滚所有修改,所有改动会丢失
git checkout .
Bash
# 回滚指定修改
git checkout
