轻松玩转Git

轻松玩转Git

  • 快速入门
    • 什么是Git
    • 为什么要做版本控制
    • 安装git
  • Git实战
    • 单枪匹马开始干
    • 拓展新功能
    • 小结
  • 紧急修复bug
    • 分支
    • 紧急修复bug方案
    • 命令总结
    • 工作流
  • 上传GitHub
    • 第一天上班前在家上传代码
    • 初次在公司新电脑下载代码
    • 下班回到家继续写代码
    • 到公司继续开发
    • 在公司约妹子忘记提交代码
      • 回家继续写代码
      • 到公司继续写代码
    • 其他
    • 快速解决冲突
    • 小总结
  • 多人协同开发工作流
  • 其他
    • 配置
    • 免密码登录
    • git忽略文件

快速入门

什么是Git

Git是一个分布式的版本控制软件。

  • 软件,类似于QQ、office、dota等安装到电脑上才能使用的工具。
  • 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。
  • 分布式
    • 文件夹拷贝
    • 本地版本控制
    • 集中式版本控制
    • 分布式版本控制

为什么要做版本控制

要保留之前所有的版本,以便回滚和修改。

安装git

详见:https://git-scm.com/book/zh/v2/起步-安装-Git

Git实战

单枪匹马开始干

想要让git对一个目录进行版本控制需要以下步骤:

  • 进入要管理的文件夹

  • 执行初始化命令

    git init
    
  • 查看管理目录下的文件状态

    git status注:新增的文件和修改过后的文件都是红色
    
  • 管理指定文件(红变绿)

git add 文件名
git add .
  • 个人信息配置:用户名、邮箱 【一次即可】

      git config --global user.email "you@example.com"git config --global user.name "Your Name"
    
  • 生成版本

    git commit -m '描述信息'
    
  • 查看版本记录

    git log 
    

    拓展新功能

git add .
git commit -m '短视频'
  • 回滚至之前版本

    git log 
    git reset --hard 版本号
    
  • 回滚至之后版本

    git reflog 
    git reset --hard 版本号
    

    小结

git init 
git add 
git commit 
git log 
git reflog 
git reset --hard 版本号

在这里插入图片描述

紧急修复bug

分支

分支可以给使用者提供多个环境,意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

  • 查看分支

紧急修复bug方案

在这里插入图片描述

命令总结

  • 查看分支

    git branch
    
  • 创建分支

    git branch 分支名称
    
  • 切换分支

    git checkout 分支名称
    
  • 分支合并(可能产生冲突)

    git merge 要合并的分支注意:切换分支再合并
    
  • 删除分支

    git branch -d 分支名称
    

    工作流

    在这里插入图片描述

    上传GitHub

    在这里插入图片描述

第一天上班前在家上传代码

首先,需要注册github账号,并创建远程仓库,然后再执行如下命令,将代码上传到github。

在这里插入图片描述

1. 给远程仓库起别名git remote add origin 远程仓库地址
2. 向远程推送代码git push -u origin 分支

初次在公司新电脑下载代码

1. 克隆远程仓库代码git clone 远程仓库地址 (内部已实现git remote add origin 远程仓库地址)
2. 切换分支git checkout 分支

在公司下载完代码后,继续开发

1. 切换到dev分支进行开发git checkout dev 
2. 把master分支合并到dev [仅一次]git merge master
3. 修改代码
4. 提交代码git add . git commit -m 'xx'git push origin dev 

下班回到家继续写代码

1. 切换到dev分支进行开发git checkout dev 
2. 拉代码git pull origin dev 
3. 继续开发4. 提交代码git add . git commit -m 'xx'git push origin dev 

到公司继续开发

1. 切换到dev分支进行开发git checkout dev 
2. 拉最新代码(不必再clone,只需要通过pull获取最新代码即可)git pull origin dev 
3. 继续开发4. 提交代码git add . git commit -m 'xx'git push origin dev 

开发完毕,要上线

1. 将dev分支合并到master,进行上线git checkout mastergit merge dev git push origin master
2. 把dev分支也推送到远程git checkout devgit merge master git push origin dev 

在公司约妹子忘记提交代码

1. 拉代码git pull origin dev 
2. 继续开发3. 提交代码git add . git commit -m 'xx'注:忘记push了

回家继续写代码

1. 拉代码,发现在公司写的代码忘记提交...git pull origin dev 2. 继续开发其他功能3. 把dev分支也推送到远程git add . git commit -m 'xx'git push origin dev 

到公司继续写代码

1. 拉代码,把晚上在家写的代码拉到本地(有合并、可能产生冲突)git pull origin dev 2. 如果有冲突,手动解决冲突3. 继续开发其他功能4. 把dev分支也推送到远程git add . git commit -m 'xx'git push origin dev 

其他

git pull origin dev
等价于
git fetch origin dev
git merge origin/dev 

在这里插入图片描述

快速解决冲突

  1. 安装beyond compare

  2. 在git中配置

    git config --local merge.tool bc3
    git config --local mergetool.path '/usr/local/bin/bcomp'
    git config --local mergetool.keepBackup false
    
  3. 应用beyond compare 解决冲突

    git mergetool 
    

小总结

  • 添加远程连接(别名)

    git remote add origin 地址
    
  • 推送代码

    git push origin dev 
    
  • 下载代码

    git clone 地址
    
  • 拉取代码

    git pull origin dev 
    等价于
    git fetch origin dev
    git merge origin/dev 
    
  • 保持代码提交整洁(变基)

    git rebase 分支
    
  • 记录图形展示

    git log --graph --pretty=format:"%h %s"
    

多人协同开发工作流

其他

配置

  • 项目配置文件:项目/.git/config

    git config --local user.name '武沛齐'
    git config --local user.email 'wupeiqi@xx.com'
    
  • 全局配置文件: ~/.gitconfig

    git config --global user.name 'wupeiq'
    git config --global user.name 'wupeiqi@xx.com'
    
  • 系统配置文件:/etc/.gitconfig

    git config --system user.name 'wupeiq'
    git config --system user.name 'wupeiqi@xx.com'注意:需要有root权限
    

应用场景:

git config --local user.name '武沛齐'
git config --local user.email 'wupeiqi@xx.com'git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup falsegit remote add origin 地址 ,默认添加在本地配置文件中(--local)

免密码登录

  • URL中体现

    原来的地址:https://github.com/WuPeiqi/dbhot.git
    修改的地址:https://用户名:密码@github.com/WuPeiqi/dbhot.gitgit remote add origin https://用户名:密码@github.com/WuPeiqi/dbhot.git
    git push origin master 
    
  • SSH实现

    1. 生成公钥和私钥(默认放在 ~/.ssh目录下,id_rsa.pub公钥、id_rsa私钥)ssh-keygen
    2. 拷贝公钥的内容,并设置到github中。
    3. 在git本地中配置ssh地址git remote add origin git@github.com:WuPeiqi/dbhot.git4. 以后使用git push origin master 
    

git忽略文件

让Git不再管理当前目录下的某些文件。

*.h
!a.h
files/
*.py[c|a|d]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/709029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CDH6.3.1离线安装

一、从官方文档整体认识CDH 官方文档地址如下: CDH Overview | 6.3.x | Cloudera Documentation CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算,以及基于Web的用户界面和重…

使用Rust 实现文件批量下载

1.概述 Rust 是一种高效的系统编程语法,具有安全、并发和实用性的特点。本篇文章将通过实例详细介绍如何使用Rust来实现文件的批量下载功能,并提供示例以帮助读者理解。我们的实例将分为四个部分来详细描述:准备环境、创建主函数、实现下载函…

Mysql8.0 数据类型介绍

1,数值类型 1.1 整数类型 TINYINT:微整数,1字节 SMALLINT:小整数,2字节 MEDIUMINT:中等整数,3字节 INT:整数,4字节 BIGINT:大整数,8字节 如…

蓝桥杯备战刷题three(自用)

1.合法日期 #include <iostream> #include <map> #include <string> using namespace std; int main() {map<string,int>mp;int days[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};for(int i1;i<12;i){for(int j1;j<days[i];j){string sto_strin…

江苏双线服务器租用的优势有哪些?

随着互联网的快速发展&#xff0c;服务器也随着科技的发展变得多种多样&#xff0c;其中双线服务器租用格外受大家关注&#xff0c;那么江苏双线服务器租用到底有哪些优势呢&#xff1f; 1.网络环境稳定 江苏双线服务器租用的主要优点就是有着高速稳定的网络环境&#xff0c;双…

P4198 楼房重建题解(线段树, 分治)

题目描述 题面 简要题意&#xff1a; 给你一个长度为 n n n 的序列 a i a_i ai​ ( n ≤ 1 0 5 n \leq 10^5 n≤105)&#xff0c;要求进行 m m m 次操作 ( m ≤ 1 0 5 m \leq 10^5 m≤105) 。操作分两种&#xff1a; 1.单点修改。 2.查询整个序列中有多少个位置 x x x 满…

动态规划(背包理论)-算法题

416. 分割等和子集 题目 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, …

Vivado Vitis 2023.2 环境配置 Git TCL工程管理 MicroBlaze和HLS点灯测试

文章目录 本篇概要Vivado Vitis 环境搭建Vivado 免费标准版 vs 企业版Vivado Windows 安装Vivado 安装更新 Vivado 工程操作GUI 创建工程打开已有工程从已有工程创建, 重命名工程GUI导出TCL, TCL复原工程TCL命令 Vivado 版本控制BlinkTcl脚本新建导出重建工程纯Verilog BlinkTc…

js处理IOS虚拟键盘弹出后输入框被遮住

​ JS IOS 前言 在项目开发的过程中&#xff0c;在IOS手机端系统下&#xff0c;当对输入框&#xff08;input/textarea&#xff09;进行focus操作时&#xff0c;键盘弹起遮住输入框。 问题描述 从页面底部focus输入框失败从页面中间focus输入框失败 原因 造成上述问题的&…

【MySQL】_自连接与子查询

目录 1. 自连接 2. 子查询&#xff08;嵌套查询&#xff09; 2.1 子查询分类 2.2 单行子查询示例1&#xff1a;查询不想毕业同学的同班同学 2.3 多行子查询示例2&#xff1a;查询语文或英语课程的信息成绩 3. 合并查询 3.1 示例1&#xff1a;查询id3或者名字为英文的课程…

Flutter 处理异步操作并根据异步操作状态动态构建界面的方法FutureBuilder

概述 当界面的内容需要依靠网络请求的数据&#xff0c;就需要处理苦恼的&#xff0c;状态是空&#xff0c;非空的逻辑了&#xff0c;不然页面构建可能会报错&#xff0c;而FutureBuilder提供了一个非常好的解决方法&#xff0c;直接看代码 代码 异步操作函数 即网络请求函数…

[CISCN2019 华北赛区 Day2 Web1]Hack World 1 题目分析与详解

一、分析判断 进入靶机&#xff0c;主页面如图&#xff1a; 主页面提供给我们一条关键信息&#xff1a; flag值在 表flag 中的 flag列 中。 接着我们尝试输入不同的id&#xff0c;情况分别如图&#xff1a; 当id1时&#xff1a; 当id2时&#xff1a; 当id3时&#xff1a; 我…

YOLOv8改进涨点,添加GSConv+Slim Neck,有效提升目标检测效果,代码改进(超详细)

目录 摘要 主要想法 GSConv GSConv代码实现 slim-neck slim-neck代码实现 yaml文件 完整代码分享 总结 摘要 目标检测是计算机视觉中重要的下游任务。对于车载边缘计算平台来说&#xff0c;巨大的模型很难达到实时检测的要求。而且&#xff0c;由大量深度可分离卷积层构…

【Redis | 第三篇】Springboot整合Redis

文章目录 3.Springboot整合Redis3.1Spring Data Redis介绍3.2整合步骤3.2.1导入依赖3.2.2配置redis数据源3.2.3使用RedisTemplate进行操作&#xff08;1&#xff09;创建RedisTemplate Bean&#xff08;2&#xff09;注入RedisTemplate&#xff08;3&#xff09;执行Redis操作&…

C++:常量表达式

C11开始constexpr作为一种声明&#xff0c;为编译器提供了在编译期间确认结果的优化建议&#xff0c;满足部分编译期特性的需求 constexpr和const区别 int b10; const int ab; //运行成功 constexpr int cb; //编译器报错&#xff0c;b的值在编译期间不能确定 const int size1…

面试笔记系列二之java基础+集合知识点整理及常见面试题

目录 Java面向对象有哪些特征&#xff0c;如何应用 Java基本数据类型及所占字节 Java中重写和重载有哪些区别 jdk1.8的新特性有哪些 内部类 1. 成员内部类&#xff08;Member Inner Class&#xff09;&#xff1a; 2. 静态内部类&#xff08;Static Nested Class&#…

Vue 组件和插件:探索细节与差异

查看本专栏目录 关于作者 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#x…

Linux查看进程占用句柄

ps -ef |grep python # 查找工具执行PID python pid 11287lsof -p 11287 |wc -l 查看进程占用句柄设置句柄上限IOError: [Errno 24] Too many open files:解决方法

阿里云短信验证笔记

1.了解阿里云的权限操作 进入AccessKey管理 选择子用户 创建用户组和用户 先创建用户组&#xff0c;建好再进行权限分配 添加短信管理权限 创建用户 创建好后的id和密码在此处下载可以得到 2.开通阿里云短信服务 进行申请&#xff0c;配置短信模板 阿里云短信API文档 短信服务…

逆向案例三:动态xhr包中AES解密的一般步骤,以精灵数据为例

补充知识&#xff1a;进行AES解密需要知道四个关键字&#xff0c;即密钥key,向量iv,模式mode,填充方式pad 一般网页AES都是16位的&#xff0c;m3u8视频加密一般是AES-128格式 网页链接:https://www.jinglingshuju.com/articles 进行抓包结果返回的是密文&#xff1a; 一般思…