前言
平时用git都是git clone和git push,没有过多操作;打工以来,才知道团队开发还有git pull和git checkout,甚至git reset;哈哈哈,可能你一口气看下来也没有拎得清,记录一下各个场景的使用情况。
1. 多分支并行开发
假设远程已经有多个分支(test1,test2)在开发中,如何并行开发?
- 获取远程仓库某分支(test1)代码:
git clone https://xxxx.git -b test1
- 一通开发后,上传代码到远程test1分支:
git add .
git commit -m "提交信息"
git push origin test1
多分支开发:
- 创建本地分支并切换到新分支
- 拉取远程分支代码
git checkout -b test2
git pull origin test2
- 推送到远程分支test2
git add .
git commit -m "新分支test2"
git push origin test2
合并分支:(将test2合并到test1分支中)
- 确定现在在本地test2分支,同时代码和远程test2分支保持一致为最新代码
git checkout test2
git pull origin test2
- 拉取远程test1分支代码
git pull origin test1
- 修改冲突(查找<<<<<<修改)
- 推送到远程test2分支
git add .
git commit -m "合并test1到test2"
git push origin test2
ok,以上都是一般开发的正常流程!
往往开发不是只记得git命令就OK的,各种协同开发的坑还是会打湿了河边人的脚。
2.协同开发冲突
协同开发就是不停的git push和git pull,上传自己的代码,拉取别人的代码,如有冲突,解决。
coderA和coderB同时开发一个项目,什么时候容易有冲突?
-
修改冲突:A,B同时修改了同一处代码,修改内容不一致;A已提交代码到远程分支,B在本地修改了同一处,拉取远程分支合并
解决办法:
谁代码效率高听谁的,可以查找<<<<<或报错信息定位到代码,根据修改逻辑保留正确且代码效率高的一个人的代码就可 -
文件冲突:文件夹目录移动或删除,git有工作区、缓存区、版本库,一般在编译器里面操作可以跟踪文件状态,如果一不小心在文件夹或者意外删除修改,文件冲突是相对难改的
3.反悔机制
远程的代码无误,本地一通修改后,发现效果不是理想的效果,git
是可以回退版本的:
- 查看查看在你上次提交之后是否有对文件进行再次修改
- 查看最近提交代码的版本号
- 重置版本号
- 从最近一次 commit 或者仓库中拉取(检出)代码,会覆盖掉当前 unstash 的修改
git status
git log
git reset 12432425252525252521456153443
git checout .
当然git reset的用法不止这一点点