Git学习 02

回到未来版本

git reflog //引用以往所有操作的日志

在这里插入图片描述
回退到之前的版本只会有改版本,没有中间版本。
只要commit到本地仓库的代码,即使reset之后也可以通过reflog找到对应的版本号进行恢复。

分支

更改一个分支代码不会影响别的分支
分支类似树形结构,但表现上为平行状态

git branch //分支操作命令,查询所有的命令
git branch dev //创建一个dev分支(默认从当前的分支进行创建即copy一份当前分支)
git branch 新分支 已有分支名称 //从已有分支名称copy创建一个新分支
git checkout dev //切换到dev分支
git branch -d 已有分支名 //删除分支,当前所在分支不能删除

真实环境创建分支的规则:

  1. 分支分为master分支,dev分支,test分支
  2. master分支不能随便进行代码提交,因为上线的版本要从master分
  3. 上线1.0版本 从master分支创建一个新的分支1.0分支(当前的线上版本)
  4. 一旦线上bug,需要切换到1.0进行bug修正,进行上线,同时将bug修正的代码合并到master分支。
  5. dev为开发分支,但是我们不要直接在dev开发分支上进行开发
  6. 去了公司之后,第一件事就是从dev分支上建立自己的分支,分支名称可以改为自己的名字。
  7. 开发是在自己的分支上进行开发,完成之后自测没有问题,将分支代码合并到dev分支,完成开发任务。
  8. 分支合并,多人开发,团队合作,提交代码时:1. 先将本地代码提交到自己分支上 2.切换dev分支, 3. 切换到自己的分支,将自己分支代码合并到dev分支,解决冲突,提交代码 4. 切换到dev分支,将自己分支合并完成的代码合并到dev分支。

合并

git merge //合并分支代码

dev分支开发完成,代码要合并到master上。合并代码步骤

  1. 先将dev分支代码commit
  2. 切换到要合并的分支上
  3. git merge dev 将dev分支合并到master上
  4. 可能会遇到代码冲突,解决冲突,然后在提交
  5. 代码要以master为主(有冲突,解决冲突)
  6. 切换到dev分支,合并master分支到此分支
  7. 也就是说,现在master分支 和dev分支保持一致
  8. 合并完成
    冲突说明:
<<<<<<< HEAD
	这块是当前版本的代码
=======
=======
	这块是对应dev分支代码
>>>>>>> dev

解决冲突就是在两个版本之间选择 采用那个版本

远程仓库合并

开发完成之后想要提交到远程仓库:

  1. 先提交到本地仓库
  2. 在提交到远程仓库的时候,要注意,不确定远程仓库是否有新的代码,需要先进行拉取操作。git pull,其在拉取的时候git会自动进行代码的合并。如果有冲突就会提示解决冲突。
  3. 冲突解决完之后,进行本地仓库的提交 git commit
  4. 然后git pull确保没有新代码产生,然后进行git push
合并代码 `git rebase`合并代码。不推荐使用会干扰提交记录

克隆

git clone

stash

比如dev分支正在进行开发,测试人员在dev分支上发现了一个bug,需要去解决bug,但是开发到一半的代码不能进行提交。
解决办法:
先把当前的代码进行隐藏,先去解决bug,解决完bug,恢复现场

git stash:隐藏未提交的代码(类似于入栈)
git stash list: 查看
git stash apply:恢复
git stash drop:删除
git stash pop:恢复并删除(常用,类似于出栈)

revert 回滚(版本回退,建议使用)

会生成一个新的版本

  1. 找到你误提交之前的版本号
  2. git revert -n 版本号
  3. git commit -m xxx提交
  4. git push推送
    回滚:只回滚要回滚的版本当前修改的代码状态,其他的不会回滚,也不会删除。

常见错误

error: you need to resolve your current index first

原因:从一个分支A切换到另一个分支B后,对切换后的B分支进行pull操作,因为pull操作实际上包含了fetch+merge操作,在执行 merge操作时,由于很长时间没有对B分支执行过pull/merge操作,本地的B分支库与remote中的B分支库中的差异很大,merge失败而停留在merge状态,也不能执行pull操 作。

解决方案:回退到merge前,再切换分支即可

git reset --merge 

Updates were rejected because the tip of your current branch is behind

https://zhuanlan.zhihu.com/p/422024766

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值