git 版本控制从入门到精通

news2024/12/25 14:46:57

文章目录

  • 1、git安装
    • 1.1、Linux安装
    • 1.2、Windows安装
    • 1.3、MAC安装
  • 2、配置git
  • 3、git命令使用
  • 4、git远程服务器
  • 5、提交到远端服务器
  • 6、commit合并
  • 7、创建分支
  • 8、命令练习记录

1、git安装

1.1、Linux安装

在linux上我们建议你用二进制的方式来安装git,可以使用发行版包含的基础软件包管理工具来安装,如果你是
是CentOS或者Fedora的操作系统,可以使用yum命令来安装git:
sudo yum install git
如果你是ubuntu或者是Debian可以使用apt-get的命令来安装git:
sudo apt-get install git

1.2、Windows安装

在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开
http://git-scm.com/download/win,会检查你的操作系统是32位的还是64位的,并自动开始下载对应的安装包。

1.3、MAC安装

通过homebrew安装git
首先homebrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)„
安装git: brew install git

2、配置git

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
git config --global user.name “lizhiyong”
git config --global user.email lizhiyong4360@gmail.com
可以使用git config --list来查看git的所有配置

如果你遇到问题也可以查看git的官方文档。
https://git-scm.com/book/zh/v2

3、git命令使用

在这里插入图片描述
1、创建仓库
git init

2、add
git add . # 将所有修改添加到暂存区

3、commit
git commit -m “描述信息”

4、git远程服务器

在这里插入图片描述
在这里插入图片描述

虽然我们说git是一个分布式的版本管理工具,不像svn
那样离开了中央服务器的仓库就干不了活了,但是如果有个
中央服务器存在,还是方便了多人之间的协作

一:创建git账号和git用户组
	sudo adduser git  #添加git用户
    sudo passwd git   #添加git的密码
    sudo groupadd git #添加git用户组
    sudo usermod -G git git #添加git用户到git用户组

二、创建git仓库
    cd /srv     # srv目录下存放git的仓库
    mkdir nginx-docs.git # 创建nginx-docs.git目录
    cd nginx-docs.git
    git init --bare # bare选项指示该仓库为裸仓库
    sudo chown -R git:git /srv/nginx-docs.git # 修改权限为git用户


git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件add到暂存区域;
3、将暂存区域的文件commit到git仓库;
4、本地的修改push到远程仓库,如果失败则执行第5步
5、git pull将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

5、提交到远端服务器

# 1、添加的-a参数会把当前暂存区里所有的修改(包括删除操作)都提交,但是那些尚未添加到暂存区的内容是不会提交的,
git commit –a –m “commit messeages

# 2、他会把此次提交追加到上一次的commit内容里
git commit --amend

# 3、git push命令用于将本地分支的更新,推送到远程主机
git push <远程主机名> <本地分支名>:<远程分支名>
例如:
git push origin master:refs/for/master


6、commit合并

在这里插入图片描述
在这里插入图片描述

# 4、git commit合并
git rebase
命令了,即git rebase –i 4cbeb4248f7, -i后面的参数表示不要合并的commit的hash值。

# 5、查看commit内容
git log

# 6、每条日志显示一行
git log --online

# 7、只显示多少行
git log -[length]

# 8、跳过前面的skip条日志
git log --skip=[skip] -3

# 9、显示一些统计信息以及文件的改动内容和行信息
git log -p

# 10、显示提交作者日期
git log --stat

# 11、显示每个author提交commit和多少条commit
git shortlog

# 12、按日期
git log --after="2018-7-1"    # 2018年7月1好之后的所有日志
git log –-before="2014-7-1"

# 13、按作者
git log --author="Dounin"  

# 14、按照提交信息
git log --grep=“issue”  # 按照提交本中是否包含issue的日志

# 15、按文件
git log -- ./src/http/modules/ngx_http_xslt_filter_module.c

# 16、按照内容
git log -S “ngx_free” # 即所有文件中包含了 ngx_free字符串的修改

# 17、按照范围 
git log <since>..<until> # 比如 git log master..feature这可以显示出自从master分支fork之后,feature分支上所有的提交

# 18、显示commit-id的提交内容,包括所有文件的修改信息
git show commit-id  

7、创建分支

# 1、创建分支:
    git branch dev
# 2、分支切换
    git checkout dev
或者:
    git checkout -b dev


8、命令练习记录

# 创建裸仓库,一般用于远端服务器
git init --bare

# 拉取代码
git clone /Users/zhu/Desktop/Audio_Study/git_test

git clone 用户名@ip:/path/to

# 生成公私钥
ssh-keygem -t rsa

# 查看分支
git brach

# 查看用户信息
git config --local -l

# 修改当前目录的用户信息
git config user.name mark-a
git config user.enail mark.a@qq.com

# 全局修改
git config --global user.name mark-a

# 推送到远端
git push origin master

# 逆向操作
# 当前world.c已经在暂存区
git restore -S .
git restore -S world.c

# 查看状态
git status

# 现在world.c已经通过commit提交到本地仓库了,现在要退回
# 查看简洁提交记录
git reflog	

# 退回之前的版本
# (默认的,退回到workspace)
git reset --mixed head~1
# 退回到暂存区
git reset --soft head~1
# 上次提交直接清空
git reset --hard head~1

# 整理操作
# 整理上一次的提交
git commit -amend 
# 整理以前的
git rebase -i 前七位~ 前七位(md5)


# 解决冲突
git pull

git add world.c
git commit world.c -m "first commit"

git commit

# 创建分支
git branch develop 
# 切换分支
git checkout develop
 
# 合并
git merge bug/timer

# 排除添加文件
创建一个.gitignore
*.exe

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

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

相关文章

electron报错Error: Object has been destroyed

问题描述 在 Electron 中&#xff0c;当一个窗口被销毁后&#xff0c;与该窗口相关联的 JavaScript 对象也会被销毁&#xff0c;再次访问已被销毁的窗口对象时&#xff0c;会导致 Error: Object has been destroyed 错误。 例如之前在写多窗口pinia状态同步 / 多窗口样式同步的…

Redis【实战篇】---- 分布式锁

Redis【实战篇】---- 分布式锁 1. 基本原理和实现方式对比2. Redis分布式锁的实现核心思路3. 实现分布式锁版本一4. Redis分布式锁误删情况说明5. 解决Redis分布式锁误删问题6. 分布式锁的原子性问题7. Lua脚本解决多条命令原子性问题8. 利用Java代码调试Lua脚本改造分布式锁 1…

Python 利用深度学习识别空间推理验证码(一)

注意:本文会比较长,因为空间推理验证码本身比较复杂,我会详细的讲解,我是如何一步一步拆分空间推理的思想去实现的,另外,这里只介绍第一种思想来解决空间推理验证码,实际上,解决该验证码的方法也比较多,这第一种,我会讲解的比较简单,通俗易懂。 注意:下面数据集使用…

Redis主从/哨兵机制原理介绍

目录 ​编辑 一、主从复制 1.1 什么是主从复制 1.2 主从复制的作用 1.3 主从复制原理 1.3.1 全量复制 1.3.2 增量复制 1.3.3 同步流程 二、哨兵机制 2.1 哨兵机制介绍 2.1.1 集群逻辑图 2.1.2 哨兵机制实现的功能 2.2 哨兵机制原理 2.2.1 监控 2.2.2 下线 2.2.2.1 下线流程 2.…

C# csc构建dll 和 csc构建时指定dll

新建一个mydll.cs&#xff1b; using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace myDLL {public class MyMath{public int add(int x, int y){return x y;}public int sub(int x, int y){return x - y;}} } 用下图命令构建…

MySQL高可用

MySQL高可用 一、高可用 1.什么是MHA MHA&#xff08;MasterHigh Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能…

LeetCode·每日一题·2490. 回环句·模拟

作者&#xff1a;小迅 链接&#xff1a;https://leetcode.cn/problems/circular-sentence/solutions/2325227/mo-ni-zhu-shi-chao-ji-xiang-xi-by-xun-ge-x65e/ 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 著作权归作者所有。商业转载请联系作者获得授权&#xff0…

fusionpbx简介

概述 fusionpbx是以freeswitch作为底层框架开发而成的开源PBX&#xff0c;在freeswitch的基础上&#xff0c;优化了GUI的易用性。 fusionpbx可用作高可用性的单租户或基于域的多租户 PBX、运营商级交换机、呼叫中心服务器、传真服务器、voip服务器、语音邮件服务器、会议服务…

admin配置k8s

系列文章目录 文章目录 系列文章目录一、实验1.实验要求2.3. 所有节点安装docker4.所有节点安装kubeadm&#xff0c;kubelet和kubectl5.部署K8S集群6./所有节点部署网络插件flannel7./在master节点查看节点状态 总结 一、实验 1.实验要求 master&#xff08;2C/4G&#xff0c…

Maven的安装过程

参考地址 https://www.cnblogs.com/hanliukui/p/16842734.html 注意下载包体是bin的包体&#xff1a;Maven – Download Apache Maven 然后ok

echart 绘制一个基础的中国地图

echart&#xff0c;绘制一个基础的中国地图 代码示例 <template><div id"china_map_box"><div id"china_map"></div></div> </template><script> import * as echarts from echarts import chinaJson from ./…

《综合与Design_Compiler》学习笔记——第一章综合综述 第二章verilog语言结构到门级的映射 第三章 使用DC进行综合

文章目录 前言一、综合综述1、综合2、综合的不同层次&#xff08;1&#xff09;逻辑级综合&#xff08;2&#xff09;RTL级综合&#xff08;3&#xff09;行为级综合 二、verilog语言结构到门级的映射三、使用DC进行综合1、定义2、写时序约束3、写环境约束&#xff08;1&#x…

Vite创建vue3+ts+pinia项目流程

Vite 需要 Node.js 版本 14.18&#xff0c;16。然而&#xff0c;有些模板需要依赖更高的 Node 版本才能正常运行&#xff0c;当你的包管理器发出警告时&#xff0c;请注意升级你的 Node 版本(这里建议node版本在16以上)&#xff0c; 推荐使用 pnpm 包管理工具 管理项目 包安装…

Hive 之 beeline 客户端连接

beeline 客户端连接 Hive beeline -u jdbc:hive2://hadoop10:10000 -n hive 我们下期见&#xff0c;拜拜&#xff01;

【Verilog HDL】FPGA-testbench基础知识

&#x1f389;欢迎来到FPGA专栏~testbench基础知识 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;FPGA学习之旅 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望大家能…

前端Vue自定义勾选协议组件 可用于登录 注册等场景

前端Vue自定义勾选协议组件&#xff0c; 可用于登录 注册等场景&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13299 效果图如下&#xff1a; # cc-protocolBox #### 使用方法 使用方法 <!-- agree&#xff1a;是…

【HTML5】svg 绘制图形

文章目录 一、基本介绍二、用法详解2.1、矩形&#xff08;rect&#xff09;2.2、圆形&#xff08;circle&#xff09;2.3、椭圆&#xff08;ellipse&#xff09;2.4、线条&#xff08;line&#xff09;2.5、折线&#xff08;polyline&#xff09;2.6、多边形&#xff08;polygo…

Redis 发布/订阅介绍

目录 ​编辑 一、发布与订阅 6.1 频道 6.1.1 发布 6.1.2 订阅 6.1.3 数据结构 6.1.3.1 订阅&#xff08;channel&#xff09; 6.1.3.2 发布 6.1.3.3 退订 6.2 模式&#xff08;pattern&#xff09; 6.2.1 发布 6.2.2 订阅 6.2.3 数据结构 6.2.3.1 发布 6.2.3.2 订阅 6.2.3.…

登录远程Linux桌面

远程桌面连接主要使用两种协议&#xff0c;一种是Windows上RDP协议&#xff0c;第二种是VNC协议&#xff0c;从使用效果来看&#xff0c;vnc更优秀。 一、VNC 使用x11vnc 1.安装x11vnc sudo apt install x11vnc 2.启动x11vnc x11vnc -passwd orangepi -display :0 -forever…

【线程池】ScheduledExecutorService接口和ScheduledThreadPoolExecutor定时任务线程池使用详解

目录 〇、简介 0.1 ScheduledExecutorService 和 Timer 的区别 一、什么是ScheduledExecutorService&#xff1f; 二、ScheduledThreadPoolExecutor中的方法 2.1 构造方法 2.2 schedule方法 2.3 scheduleAtFixedRate方法 2.4 scheduleWithFixedDelay方法 2.5 setConti…