后端---git常⽤命令和使⽤顺序
Git基本了解
git命令是⼀些命令⾏⼯具的集合,它可以⽤来跟踪,记录⽂件的变动。⽐如你可以进⾏保存,⽐对,分析,合并等等。这个过程被称之为版本控制。已经有⼀系列的版本控制系统,⽐如SVN, Mercurial, Perforce, CVS, Bitkeepe等等。
Git是分布式的,这意味着它并不依赖于中⼼服务器,任何⼀台机器都可以有⼀个本地版本的控制系统,我们称之为仓库。如果是多⼈协作的话,你需要还需要⼀个线上仓库,⽤来同步信息。这就是GitHub, 腾讯云蜂巢的⼯作。
本章基础篇主要讲解⼀些Git代码提交流程和Git基础命令的使⽤。
⼀、Git版本分⽀管理
以下是⼀个⽐较基本的分⽀管理⽰范,每个公司的项⽬管理运作不同,分⽀管理也有各⾃的特⾊,但万变不离其宗。
1) dev分⽀⽤于⽇常开发
2) 当有新版本需要发布时,把dev代码合并到release分⽀做集成测试,并等待发布
3) release分⽀进⼊bug修复阶段
4) 如果在release分⽀发现bug,那么在release分⽀进⾏修改,并使⽤git cherry-pick把修复bug的commit合并到release分⽀上
(cherry-pick与merge不同,它的合并是以commit为单位⽽⾮整个branch)
完成后,release分⽀上所有代码改动(除版本号之外)都应该已经合到了dev分⽀上
5) release分⽀测试完成后,发布到线上环境
6) 并且打上tag,合并到master分⽀上
7) 如果在线上出现bug,那么在master上hot fix修复
8) 出现hot fix并修复后,需要重新把hot fix的代码合并到dev以及release分⽀中去使代码保持⼀致
⼆、Git基本命令汇总
1.查看本地⽂件状态
git status —-查看本地、本地仓库、缓存(stash)的⽂件修改状态
—红⾊ 代表本地⼯作空间的⽂件修改
—蓝⾊ 代表提交到本地仓库中的⽂件(git add .)
2.切换版本/覆盖当前修改⽂件
git branch - 查看当前版本
git branch -a 查看所有版本
git checkout XXX(版本名) —-切换到远程库中XXX版本
git checkout filepath —覆盖当前修改的⽂件
git checkout . -覆盖当前所有修改⽂件
3.从远程库获取最新代码
git remote -查看远程库名称
git remote -v
git remote show XXX(远程库名)
git fetch — 从remote端拉取最新代码
git pull XXX(远程库名) XXX(分⽀名) -把拉取的最新代码跟当前⼯作空间合并
git rebase —把远程拉回的代码和本地合并
4.缓存本地代码
当要切换到其它版本时,想保存在当前版本修改的⽂件:在切换前做
git stash —-把本地修改过不需要提交的⽂件放⼊缓存
git checkout XXX(版本) —切换库版本
切回原来的库,把⽂件从stash缓存中拿出来
git stash pop — 从缓存中拉出
git常用指令
5.提交远程库
git add .
git commit -m ''
git remote 查看远程关联名称
git push remote的名称 本地master
6.处理冲突
git fetch 拉取最新⼯程
git pull XXX(远程库名) XXX(分⽀名) -把拉取的最新代码跟当前⼯作空间合并
冲突产⽣后,去⼯作空间修改后,>>>新代码===⽼代码<<<,保留最终代码,删除提⽰符,重新提交。
7.把本次提交的内容提交到其他分⽀(⽐如发布时bug的修改)
git cherry-pick commitId
8.建议执⾏顺序
git status 查看修改状态
git checkout filename 放弃某⽂件的修改。
git stash 储存修改
git fetch 拉取最新⼯程
git rebase 与本地分⽀合并
git stash pop 弹出储存⽂件,此时新⽂件可能会与你的⽂件产⽣冲突,解决冲突。
git add filename 添加某个修改⽂件
git add . 提交所有加点
git reset HEAD filename 回滚指定⽂件,回滚所有加点:"git reset HEAD . "
git commit -m''
git push 本地remote远程分⽀名,本地分⽀名
例我的本地分⽀为master 远程remote 别名为 origin 则提交为git push origin master
9.切换HEAD
git reflog --查看HEAD记录
git reset --hard HEAD^ //切换到之前⼀个HEAD
git reset --hard fad4462 // 切换到某个已经回退的HEAD
10.刪除 local branch
git branch -d <branch_name>
最后 git pull 和git commit命令的顺序
我的建议是:
1.在本地修改与远程代码⽆冲突的情况下,优先使⽤:pull->commit->push
2.在本地修改与远程代码有冲突的情况下,优先使⽤:commit->pull->push
那么我们怎么去确定是否有冲突呢?
⼀般我们在合作开发⼀个项⽬的过程中,都会有分⼯,有时会两个⼈同时修改⼀个类,有时整个类都是你⾃⼰在开发。
如果都是⾃⼰在开发的类,当然优先使⽤pull->commit->push,为什么我更倾向这种⽅式呢,因为这样会减少Git没有必要的merge。
如果有冲突的情况下,先pull了会出现什么问题呢?
如果你的判断失误,在本地修改与远程代码有冲突的情况下,先执⾏了git-pull,即使是这样也不⽤担⼼,git会给你⼀个错误提⽰,这时候你再去执⾏commit->pull->push也是没有问题的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论