1. Git
每个开发可以有属于自己的整个工程的本地拷贝。隔离的环境让各个开发者的工作和项目的其他部分修改独立开来
即自由地提交到自己的本地仓库,先完全忽略上游的开发,直到方便的时候再把修改反馈上去。
2. 初始化
1) 创建线上仓库
2) 创建本地仓库
git init //创建本地仓库
git remote add upstream set-url //远程仓库地址设置别名
git add . //提交工作区内容到缓存区.
git commit -m '备注' //提交缓存区内容到本地版本库
git push upstream master //提交本地版本库到线上版本库
3. 协同开发
1) 同步线上代码
git pull upstream master
git fetch upstream && git rebase upstream/master
git pull 等同 git fetch && git merge
2) 开发分支
git checkout -b dev190719 //新建开发分支
1.从主分支checkout 新分支作为自己本地开发分支
2.本地开发分支不要提交线上版本库 只在本地维护
3.开发完成后merge到主分支
4.长时间开发 定期rebase线上代码到开发分支// 123-56-78
git checkout除了切换分支,还可以撤销本地修改(暂存区同步覆盖开发区)
git merge | git rebase
git merge
当本地主版本有修改,高于初始版本,开发分支合并合并出一个版本号,原版本号都会保留
git rebase
1.暂存当前修改
2.回退到修改前版本,
3.版本更新到最羞版本
4.暂存修改恢复到当前(愿分支版本号丢失,产生新版本号)
通用场景
本地开发分支 定时rebase线上主分支
主分支合并开发分支尽量使用merge
3) 处理紧急BUG
git commit -a -m '暂存' || git stash
暂存当前开发进程 切换到主分支解决问题
git commit 是直接提交当前修改到本地版本库
为避免过多无用提交,建议使用 git stash
git stash 是提交修改到暂存。使用命令 git stash pop 恢复
git checkout master //切回主分支 git checkout bug1907 //新建bug分支处理问题
切出一个分支处理bug,处理完成后合并到测试分支提交测试,
测试通过后,将当前分支merge到主分支
处理完成后切回 开发分支 继续开发
git stash pop //切回开发分支后,恢复暂存区修改 到 工作区
4)合并冲突解决
git rebase branch
rebase冲突解决
解决不了
git rebase --abort
git status 查看冲突文件
解决以后git add . 提交冲突
git rebase --continue
git status 查看冲突文件
解决以后git add . 提交冲突
git rebase --continue
.....
git merge branch
解决不了
git merge --abort
简单粗暴
git status查看冲突文件
git add .
git commit -a -m ''
4. 版本回滚
git checkout && git reset
git checkout 是安全的,只会回退head的指向,不回删除已存的版本库版本
git reset 回退会删除一提交 除非线上回滚,尽量不用
5. 常用命令
git diff
可以对比 版本 分支 文件
对比分支不同
git dif branc1 branc2
对比版本号不同
git diff xxxx xxxx
对比不同版本 某个文件or目录异同
git diff branch1 branch2 path
git log && glog
查看版本更新日志
git rebase -i head~*
把多余的commit压缩到一个
git branch -v
查看本地分支列表
git branch -d |-D
删除分支 -d 删除本地以合并分支 -D 强制删除本地未合并分支
git status
最常用,查看当前缓存区状态
新建 修改 冲突合并
git checkout -b bra upstream/bran
以某个分支为基础创建分支