Git学习总结

1、概述

1.1、为什么学习git?

  • 第一份和第二份工作的时候,公司主要使用的是svn,也没有详细去学习,接触的知识点也比较少,日常工作主要是在ide工具中配置svn插件,在ide中拉取,提交代码。
  • 第三份工作公司使用git来做项目的版本控制,遇到的问题比较多,如下:
   1、比如错误提交了新开发的功能到master分支上了,如何回退?
   2、分支开发完成时,如何合并?
   (一般的cd平台会进行合并,如果出现冲突,则需要手工合并)
   3、如何创建新项目到gitlab上?
   4、如何忽略某些文件?比如idea自动生成的文件,编译生成的target目录

如上这些问题,让我在工作中有种疲于奔命的感觉,面向搜索引擎解决问题,工作效率严重下降

1.2、怎么学习git?

对于怎么学习git,现在的我不太好说,因为现在我只是入门了git的基本操作,借用极客时间中王宝令老师的话,先纵观全局,在细致入微。

1、首先你需要了解git是什么,简单对比svn,了解它们的差异
2、在以一个helloworld案例入门,了解git的基本操作,并且对比到工作中的场景
3、熟悉入门案例相关的命令
4、构造各种工作中可能会遇到的场景,并进行解决和总结
5、了解git的实现原理

.....

另外我学习的git的资料:
1、掘金的git小册
2、廖雪峰的git文章
3、git的官方文档

1.3、git是什么?

1.4、为什么选择git,对比SVN?选择的考量点?

2、Git工作场景梳理

2.1、如何保存你的密码?

二种方式:
1、http方式
  设置 git config --global credential.helper 'store'
2、SSH方式
  在本地生成公钥,并将公钥在远程仓库上进行配置即可(具体可以百度)

2.1、创建新工程

以下2种方式都需要你先在运程仓库上创建新仓库(如果远程仓库已存在,则不需要操作)

2.1.1、本地创建新工程,push到远程仓库
1、在本地创建新工程
   git init git-study
2、关联到远程仓库
   git remote add origin https://gitee.com/zxwx/git-study.git/
   使用git remote -v 查看远程仓库信息
3、提交代码到远程仓库
   git add . 
   git commit -m 'init project'
   git push
2.1.2、远程仓库新建工程,拉取远程仓库分支到本地
git的追踪存储模型

2.2、多人协作

当需要迭代一个版本的时候,大部分情况是多人协作开发,先是对照需求文档,进行设计和分工,当我们都对同一个分支进行拉取和提交代码时,就需要进行merge,当我们都对某个部分进行的修改提交,就会产生冲突,这时就会产生merge冲突,需要手工去解决冲突,再次提交

2.2.1、merge和冲突
对于merge,我现在想到2个工作中经常遇到的场景:
1、同一个分支去做pull的时候
   1、git pull   (git pull == git fetch + git merge)
   2、当出现冲突时,
      git status(查看冲突的文件)
   3、进行手工解决冲突
   4、执行git add . 、 git commit 、 git push 
   
2、分支开发完成,merge到主master分支上
    1、git checkout master
    2、git merge test   (test为我的分支名)
    3、如果出现冲突,则手工解决冲突
    4、git push (将merge后的内容提交到master分支上)

2.3、如何撤销

 如下是我罗列的需要撤销的三种比较宽泛的情况:
 1、从暂存区撤销
    git reset HEAD 文件名
    或者
    git reset HEAD .    (.表示所有文件)
 2、从本地仓库撤销
    当你在本地提交了一个commit,你想执行撤销,执行如下步骤
    1、git log 查看commit提交日志
    2、git reset --hard HEAD^ (HEAD^只HEAD指向的上一个commit,HEAD^^表示HEAD指向的上二个commit)
    3、查看版本是否被回退
       git log  (查看提交日志是否少一个)
       git status( 查看暂存区文件变化是否被清空)
       cat 文件名 (查看文件内容是否被回退)
       
    备注:git reset HEAD^ 有三个options,
         1、--soft  表示回退到最后一次commit操作之前
         2、--mixed 表示回退到最后一次add之前的状态
         3、--hard  表示回退到倒数第二次commit之后的状态
         
 3、从远程仓库撤销
      目前我在网上学习到的都是先在本地一次回滚或者撤销操作后,在push到远程仓库
      主要涉及到的命令为git reset 和 git revert 这两个命令
      
      对于这两个命令的差别,可以参考博客:https://segmentfault.com/a/1190000019153248
      比如当前存在commitA -> commitB -> commitC
      git reset --hard commitB 会将版本回退到commitB,则commitC的修改则丢失。
      git revert commitB 则只会将commitB这次提交的修改进行撤回,commitC依旧存在
      
      备注:如果commitB和commitC都对A文件做了修改,那么执行git revert commitB是不是会出现冲突呢?
      答案是:会,需要手动解决冲突
     
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值