轻松玩转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的用户界面和重…

蓝桥杯备战刷题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…

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…

[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;由大量深度可分离卷积层构…

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; 一般思…

【算法大家庭】分治算法

目录 &#x1f953;1.简单介绍 &#x1f9c8;2.汉诺塔问题 1.简单介绍 分治算法是解决问题的一种思想&#xff0c;它将一个大问题分解成若干个小问题&#xff0c;然后分别解决这些小问题&#xff0c;最后将小问题的解合并起来得到原问题的解。 分解&#xff1a;将原问题分解…

Mazing官方 2.17.17版新i功能介绍

iMazing官方 2.17.17版是一款管理苹果设备的软件&#xff0c;是一款帮助用户管理 IOS 手机的PC端应用程序&#xff0c;能力远超 iTunes 提供的终极 iOS 设备管理器。在iMazing官方版上与苹果设备连接后&#xff0c;可以轻松传输文件&#xff0c;浏览保存信息等&#xff0c;功能…

SD-WAN对云服务的影响

近年来&#xff0c;随着企业对云服务的依赖不断增加&#xff0c;SD-WAN技术成为提升连接性能的热门选择。SD-WAN通过简化云集成和连接&#xff0c;以及提升应用程序性能&#xff0c;为企业带来显著的业务优势。这种云连接的改进使企业能够更轻松地接触全球劳动力和潜在客户。 首…

语文专刊《中学语文》是什么级别的刊物?

语文专刊《中学语文》是什么级别的刊物&#xff1f; 《中学语文》创刊于1958年&#xff0c;由国家新闻出版总署批准&#xff0c;经湖北省教育厅主管的省级学术期刊。 《中学语文》是由湖北大学文学院主办、国内外公开发行的学术期刊&#xff0c;主要面向中学语文教师和语文教…

盘点:好用的伪原创文章生成器软件

伪原创文章生成器软件在内容创作域领应用的非常广泛&#xff0c;它不仅可以为创作人员解决文章或文案创作困难的问题&#xff0c;同时还可以作为提升创作效率的完美工作&#xff0c;然而随着互联网技术的发展&#xff0c;互联网上的伪原创文章生成器软件多到让人应接不暇&#…

echarts鼠标事件

鼠标事件支持方法 ECharts 支持常规的鼠标事件类型&#xff0c;包括 ‘click’、 ‘dblclick’、 ‘mousedown’、 ‘mousemove’、 ‘mouseup’、 ‘mouseover’、 ‘mouseout’、 ‘globalout’、 ‘contextmenu’ 事件 简单实例 // 基于准备好的dom&#xff0c;初始化EChar…

加州大学圣地亚哥分校伯克利分校联合英伟达最新开源!COLMAP-Free 3D Gaussian Splatting

作者&#xff1a;石昊 | 来源&#xff1a;3DCV 在公众号「3DCV」后台&#xff0c;回复「原论文」可获取论文pdf 添加微信&#xff1a;dddvision&#xff0c;备注&#xff1a;3D高斯&#xff0c;拉你入群。文末附行业细分群 从图像序列中进行相机姿态估计和新视角合成的问题。…

论文笔记:A survey on zero knowledge range proofs and applications

https://link.springer.com/article/10.1007/s42452-019-0989-z 描述了构建零知识区间证明&#xff08;ZKRP&#xff09;的不同策略&#xff0c;例如2001年Boudot提出的方案&#xff1b;2008年Camenisch等人提出的方案&#xff1b;以及2017年提出的Bulletproofs。 Introducti…

Win11系统实现adb命令向安卓子系统安装APP

Win11系统实现通过adb命令向安卓子系统安装已下载好的apk包。 要实现以上目标&#xff0c;我们需要用到一个Android SDK 的组件Android SDK Platform-Tools &#xff01;这个组件呢其实是被包含在 Android Studio中的&#xff0c;如果你对安卓开发有所了解对此应该不会陌生&…