git是什么

git是一个分布式版本控制工具,github是代码托管平台。

git有什么用

  • 保存文件的所有修改记录

  • 使用版本号进行区分

  • 随时可浏览历史版本记录

  • 可还原到历史指定版本

  • 对比不同版本的文件差异

为什么要用git?

  • 多人协作开发一个大型项目

  • 每个人都在代码库下载代码,然后进行修改,把大家不同版本的代码合并上传到平台

  • 公司都会有自己的代码托管平台,github是开源的,免费学习,参与知名项目

  • 为协作开发而生的,公司都在使用,不得不学

要学什么?怎么用

基本概念

仓库

仓库分为远端仓库和本地仓库

远端仓库

  • git init --bare

本地仓库

  • git clone ...

协议

  • http

  • ssh

使用ssh公钥登录GIT服务器

生成公钥和私钥(ssh-keygen -t rsa)

安装openssh server(可省略)

复制公钥内容到远端服务器 .ssh/authorize_keys

git clone

  • git

设置用户名和密码

局部

使用git config user.name mark设置用户名

设置邮箱使用 git config user.email mark@qq.com

git config --local -l

全局

使用 git config --global user.name mark设置用户名

使用git config --global user.email goddragon@qq.com设置邮箱

git config -l

本地工作区

就是我们使用git init或 git clone 所在的路径

暂存区

使用 git add <源码文件>添加到暂存区

本地仓库

使用git commit . 添加到本地仓库

远程仓库

使用git push orgin master推送到远端服务器

版本号

通过 git log查看我们的提交记录·里面有我们的版本号

head

当前检出记录的符号引用

基本操作

  • 暂存(git add)

  • 提交(git commit)

  • 推送(git push)

  • 拉取(git fetch)

  • 拉取合并(git pull)

git fetch

git merge

  • 查看状态(git status)

  • 查看历史(git log)

git reflog

逆向操作

  • index -> workspace git (git restore -S 源码文件)

  • 本地仓库 -> index (git reset --soft)

  • 本地仓库 -> workspace(git reset --mixed)

  • 本地仓库 ->null(git reset --hard)

  • workspace ->null(git checout、git checkout --file、git checkout -f)

本地仓库整理操作

  • 整理上一次提交(git commit --amend)

  • 整理多次提交(git rebase -i h1 h2、左开右闭)

  • 没有人基于你的分支开发(从变基那个节点开始往后的所有节点的commit id都会变化、会引起其他人冲突)

分支操作

  • 查看分支(git branch)
  • 创建分支(git branch develop 创建、git chect out -b develop 创建并切换)
  • 合并分支(git rebase(不建议使用))
    • 从两个分支的共同祖先开始提取当前分支上的修改
    • 提取的提交应用到目标分支的最新提交的后面
    • 将当前分支只想目标分支的最新提交
    • 可能引发其他人基底发生改变
  • 删除分支
    • git branch -d develop
    • 删除远端 git push origin -d develop

*分支作用:独立变化互不依赖

解决冲突

  • 冲突产生原因 不同分支修改了同一文件
  • 解决原则
    • 不要影响其他人提交的功能
    • 协商解决
  • 解决
    • git merge

      • git add .
      • git commit . -i -m ".."
    • git rebase
      • git add . 标记解决
      • git rebase --continue
  • 建议

    提交前先pull代码

推荐一个零声学院免费教程,个人觉得老师讲得不错,

分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,

fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,

TCP/IP,协程,DPDK等技术内容,点击立即学习:

服务器

音视频

dpdk

Linux内核

自我总结的git的使用的更多相关文章

  1. Git的使用和部署

    Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). 什么是版本控制系统? 没有版本控制系统 有了版本控制系统 版本 文件名 用户 说明 日期 1 service.doc 张三 ...

  2. 使用Alipay代码源,构建自己的Docker镜像

    1. alipay 镜像仓库 地址 (自行换成自己的阿里镜像云DockerHub地址) https://cr.console.aliyun.com/repository/ 2.alipay 代码云 地 ...

  3. 浅谈自我对git的初步认识

    本学期我们新增了一门课程,那就是软件工程,不知道为什么,感觉有种莫名的高大上.哈哈!难道是这个名称太抽象了吗?这个问题我感觉到后来肯定就明白了. 第一次博客,感觉好紧张哦,嘿嘿!老师让我们谈谈对git ...

  4. 安装并学习git的基本使用;注册Github账号,并创建仓库,编辑自我介绍,并提交commit

    安装.学习.注册Git成功,也创建了仓库和自我介绍. 但Git clone没有做,再打开Git网页一直出现错误,不理解.

  5. Git使用的自我总结

    一.Git安装后打开Git bash,第一次使用 1.Git账号信息配置 2.用命令git clone从远程库克隆 会在克隆的项目下有一个隐藏的.git目录,这个目录是Git来跟踪管理版本库的,没事千 ...

  6. 《web全栈工程师的自我修养》读书笔记

    有幸读了yuguo<web全栈工程师的自我修养>,颇有收获,故在此对读到的内容加以整理,方便指导,同时再回顾一遍书中的内容. 概览 整本书叙述的是作者的成长经历,通过经验的分享,给新人或者 ...

  7. GIT 配置管理

    git版本控制开发流程小结笔记(一) 收藏                                                                     何良瑞Nyanko君 ...

  8. 学习Git的总结与体会

    学习Git的总结 blog 第一次学习Git是完全按照廖雪峰老师的教程学习的,学的过程中基本上没有遇到什么问题,但是自己实际操作就问题不断了. 首先,还是按照惯例,来膜拜一下廖雪峰老师精简的教程知识吧 ...

  9. [git]用pelican搞一个自己的blog(已完成)

    pelican Pelican Static Site Generator, Powered by Python:Pelican是python语言写的静态网站生成器.因为我一直打算用github pa ...

  10. Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目

    本文主要分享一个Git.Framework 开发的一个项目的部分源码,此项目代码"比较垃圾",所以请各位码农,码畜,码神,码圣勿喷!发此文只为记录工作问题以及分享问题! 一. 项目 ...

随机推荐

  1. 突破SESSION 0隔离的远程线程注入

    与传统的 CreateRemoteThread 函数实现的远线程注入 DLL 的唯一区别在于,突破 SESSION 0 远线程注 入技术是使用比 CreateRemoteThread 函数更为底层的 ...

  2. NEMU PA 1 实验报告

    课程地址: PA1-1 https://www.bilibili.com/video/BV1JE411J7AK PA1-2 https://www.bilibili.com/video/BV1EE41 ...

  3. NAND flash 扫盲博客

    从SSD角度学习NAND Flash(一)_小小单片机的博客-CSDN博客 从SSD角度学习NAND Flash(二)_ssd和nand 的交互_小小单片机的博客-CSDN博客 从SSD角度学习NAN ...

  4. C 语言常用头文件解释

    C系统提供了丰富的系统文件,称为库文件,整理一下以后好实用: <stdio.h> 定义了三个变量类型.一些宏和各种函数来执行输入和输出 https://www.runoob.com/cpr ...

  5. 从零开始手写缓存框架(12)redis expire 过期的随机特性详解及实现

    前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(二)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...

  6. 【Unity3D】广告牌特效

    1 前言 ​ 广告牌特效是指:空间中的一个 2D 对象始终(或尽可能)面向相机,使得用户能够尽可能看清楚该 2D 物体.广告牌特效一共有以下 3 种: 正视广告牌:广告牌始终以正视图姿态面向相机,即广 ...

  7. 使用DeskPins工具钉住窗口

    需求 我们经常一边看着PDF或视频教程,一边又打开一个文本编辑器/word/markdown编辑器在做一些笔记.问题是有时候呀需要来回切换(alt+tab)窗口,时间长了其实费时费力,这是一名工程师无 ...

  8. js获取格式化日期方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. cf思维题

    1.B. Paranoid String 题意:操作一:01可以变成1,操作二:10可以变成0.给定一个串,判断字串经过若干次操作,能否长度变成1,统计数量. 思路:对01来说,1可以吃掉0,然后前边 ...

  10. Modbus协议入门

    1.Modbus协议是不是开源的,免费的? 标准.开放,用户可以免费.放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权. 2.怎么传输,有线还是无线? 既可以有线传输如双绞线.光纤, ...