当前位置: 首页 > news >正文

工作中对git使用的总结

       git与svn的区别,简单的说,
       svn在checkout后,如果不提交,那么版本库没有记录,如果修改的文件比较多,中间想回退几个文件,非常麻烦。git 是clone下来代码和记录,不提交到服务器时,可以本地多次commit,能做到部分回退,最后push到服务器,push的除了代码变更,还没有每一次的提交记录。
另外,git对一些场景比较适用,比如新需求正在开发,突然发现线上有bug,svn随着不断提交,代码已经与生产环境有差异,最好的办法是取某个时间的版本进行修改,再一点点合并进去。而git,线上与开发可以是不同分支,可以优先改线上代码,完成debug后,将线上分支merge到开发分支,就可以了。

       1.clone代码
  命令 git clone -b dev https://github.com/xuezhankui/SpringbootExample
  黄色部分为clone dev分支,不加的话,clone下来master分支,修改分支可以通过git branch命令来改

  2.git branch命令
  首先,查询本地分支和远程分支都有哪些
  git branch -a
  黄色部分代表远程分支,没有参数显示本地分支。

  其次,改变push的分支
  因为是从master clone到本地master,所以master分支的push,必将上传到线上master分支,现在改一下。
  情况1:如果线上有dev分支,想clone这个,但是是以masterclone下来的,
  这时候只需要
  git checkout -b dev origin/dev 作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
  情况2
  使用本地dev分支,push的时候指定master分支。
  虽然不建议这么做,至少给个方法
  1.此做法与合并时有点像
  git checkout dev 切换到dev分支
  git branch --set-upstream-to=origin/master 设置push的目标
  git push
  2.一步搞定
  git push origin master

  最后,删除分支
  git branch -d 要删除的分支

  3.提交代码
  这个简单,就简单说了
  1。用git status命令,可以查看到都改了哪些文件
  2.git add
  两种方式,第一种,git add 路径/文件名
  第二种,git add * //添加所有变更文件
  3. git commit
  git commit -m “注释信息”

      4.关于git commit -m "注释"

      如果出现提示 Please Tell me who are you

      这是账户和密码没被记住

      git config --global user.email "你的git注册的email"

      改动后,在git push的时候会提示输入用户名和密码

  4.合并以及冲突合并

  场景:在dev_feature_xx分支改完了,需要合并进dev
  方法一
  git checkout dev 切换到dev
  git merge dev_feature_xx
  可能会产生冲突,冲突的文件可以用git status找到

  commit前也可以用 git diff dev_feature_xx dev 对比一下
  合并完冲突文件
  git add 冲突文件
  git commit -m 'merge'

  如果不确定dev对应哪个remote分支,可以执行一下
  git branch --set-upstream-to=origin/dev 设置push的目的地
  git push
  或者
  git push origin/dev

  方法2
  git checkout dev
  git pull origin dev_feature_xx
  修改冲突文件
  git add 冲突文件
  git commit -m 'merge'
  git push origin/dev

  5 rollback
  首先了解两个命令
  git reflog 版本变化的记录,包含回退操作
  git log 每次提交的记录,包含了注释,和commit id
  方式一:
  id方式 git reset <id> <文件名>
  文件名不写的话,恢复所有文件

  方式二:
  HEAD方式,当前版本是HEAD
  比如你修改了文件,后悔修改了,可以
  git reset HEAD <文件名>

  如果想恢复到上一个版本
  git reset HEAD^
  再上一个版本HEAD^^,以此类推

  6.其他操作

       git rm <文件名>  删除,这里指从git库删除。

  相当于 rm <文件名> git add <文件名>

  删除后要commit。

        删除文件后的恢复:以a.txt为例

        1.未commit到git库的文件,删除后就没有了

        2.删除操作在执行commit之前,可以 git reset HEAD a.txt,将文件恢复到缓冲区,然后,git checkout a.txt找回。

        3.删除操作已经提交,可以 git reset HEAD^ a.txt,将文件恢复到缓冲区,然后,git checkout a.txt找回。

         

 

转载于:https://www.cnblogs.com/xuezhankui/p/10427369.html

相关文章:

  • 注册InstallShield Limited Edition for Visual Studio 时无法选择国家解决方法
  • AJAX CRUD
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • jq+css+html简单实现导航下拉菜单
  • 使用docker-compose进行多节点部署
  • 一次goldengate故障引发的操作系统hang起,HA自动切换
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring--JdbcTemplate
  • Swift 项目主管和大家聊了聊 Swift 5,ABI 稳定性最受关注
  • 什么是测试需求?(转)
  • JavaScript对象:我们真的需要模拟类吗?
  • 深入理解C语言
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • .NET Core跨平台微服务学习资源
  • ZOJ 3329
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017 年终总结 —— 在路上
  • Fabric架构演变之路
  • Java,console输出实时的转向GUI textbox
  • Java比较器对数组,集合排序
  • 后端_ThinkPHP5
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 时间复杂度与空间复杂度分析
  • 世界上最简单的无等待算法(getAndIncrement)
  • 我从编程教室毕业
  • 译自由幺半群
  • 用jQuery怎么做到前后端分离
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ionic入门之数据绑定显示-1
  • python最赚钱的4个方向,你最心动的是哪个?
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​马来语翻译中文去哪比较好?
  • #stm32整理(一)flash读写
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (pytorch进阶之路)扩散概率模型
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (剑指Offer)面试题34:丑数
  • (接口封装)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转载)Linux网络编程入门
  • .NET 材料检测系统崩溃分析
  • .net反编译的九款神器
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • /3GB和/USERVA开关
  • /var/spool/postfix/maildrop 下有大量文件
  • :O)修改linux硬件时间
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • @Validated和@Valid校验参数区别
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • []使用 Tortoise SVN 创建 Externals 外部引用目录