Git使用教程 gittutorial

该教程对该文章的翻译:https://git-scm.com/docs/gittutorial

本文介绍怎用使用 Git 导入新的工程、修改文件及如何其他人同步开发。

首先, 可以使用以下指令获取文档帮助

git help log

笔者注:不建议看这个文档,标准的语法介绍格式,很不友好

可以使用指令

git log --graph

查看提交过程

笔者注:不过也不建议使用,虽然优点GUI感觉,但毕竟是命令行输出。建议安装个GitKraken,才是真的方便。

在开始任何开发之前,建议线配置用户名和邮箱,例如

git config --global user.name "Your Name"
git config --global user.email "you@yourdomain.example.com"

笔者注:这个配置是全局有效的,就是整台电脑都有效,配置保存在 ~/.gitconfig 文件里。上面的名字和邮箱就是注册Github/Gitee/Gitlab 的用户名和邮箱。

导入新的工程

先只考虑在本地进行开发,想要在代码开发过程中进行版本管理。有一个压缩文件 project.tar.gz,解压并且进行Git初始化

tar xzf project.tar.gz
cd project
git init

Git将会输出

Initialized empty Git repository in .git/

通过初始化,会产生一个文件夹 .git,git相关的东西会存在里面。

接下来,可以将当前路径下的所有文件(用 . 表示)进行暂存(原文用 take a snapshot,翻译成快照太别扭了)。

git add .

这个暂存操作会将文件暂时放在一个叫做索引表(Index)的地方。如果想要长久保存,那么就执行

git commit

笔者注:这个命令会打开编辑器,写入自己的Comit,实际上直接用 git commit -m "commit 内容" 更方便。

暂存(仅add)和提交(commit)的区别是什么呢?可以这样理解,比如写错了,要返回之前写的内容,要么返回到原始内容,要么返回add完毕的结果。但是如果commit了,可以直接跳到每一次commit的时候。

修改文件

如果修改了一些文件,就把它们加入到索引表中,

git add file1 file2 file3

add完毕,准备提交,可以使用 git diff --cached 来查看当前已add的东西与上一次commit后的差异

git diff --cached

如果不加参数 --cached,那么就是查看当前未add的东西与上一次commit后的差异了。git status 指令也可以查看当前的修改

git diff
git status

git add 的逆操作是 git restore

注:增删改 都是修改。
对于很多IDE,例如VScode,修改了的地方也会有标注,可以跟上述指令输出对比加深理解。

如果确定要提交,那么继续执行 git commit 即可。

也可以把 add 和 commit 合并成一条指令

git commit -a

不过一般都分开来。

查看提交历史

任何时候都可以使用以下指令查看修改

git log

如果想要很详细地比较每一步提交的差异,使用指令

git log -p

但是通常就是简单看以下每一步的修改,常用指令

git log --stat --summary

分支管理

一个Git仓库能够维护很多个分支,创建一个新的分支,例如 experimental,使用

git branch experimental

查看分支使用指令

git branch

就可以输出所有分支,例如

  experimental 
* master

experimental 是刚才创建的,而 master 是默认的分支。

master 上创建 experimental,两者是一致的,相当于只是别名,改一个另一个也跟着修改,直到commit后才会各走各的。

切换到experimental 分支使用

git switch experiment

现在修改一下文件,并且add和commit

git commit -a

现在如果执行指令 git switch master 切换到分支 master,就看不到自己的修改,因为修改是在 experimental 上进行的。如果切换到 experimental,又会重新看到修改。

master 分支上修改文件内容,并且commit(默认已经add),那么从此两个分支就是完全不一样的了,会产生分歧(diverge)。此时,就需要合并(merge)代码,将所有修改合并在一起。

例如,将 experimental 合并到 master,由于当前已经在 master 分支上,因此使用以下指令进行合并

git merge experimental

如果修改没有冲突(conflict),那么会自动完成合并。但是如果有冲突,就需要决策选择哪个分支的内容了。

没有冲突例如在 master 中将变量 a 从0改为1,在experiment 分支中将变量 b 从 0 改为2,那么合并后 a 为1,b为2。
有冲突例如 master 中将变量 a 从0改为1,在experiment 分支中将变量 a 从 0 改为2,那么两个分支修改不一致。

可以使用

git diff

查看冲突。然后在IDE(例如VScode)中选择要保留的内容解决冲突问题。例如:

在这里插入图片描述

如果要取消合并,使用 git merge --abort,在commit前可以取消,commit后就直接回退版本吧。

现在 experimental 的内容已经合并过来了,可以删除该分支了。删除分支使用指令

git branch -d experimental

有时要强制删除一些分支,可以是使用指令

git branch -D experimental

使用Git合作开发

假设小明新建一个Git仓库 home/ming/project,小华也在根目录下克隆该仓库

hua$ git clone /home/hua/project myrepo

新仓库 myprepo 是对小明创建的仓库的复制版本。现在小华开始修改文件,并且提交。当小华完成自己所有开发时,就需要传给小明进行合并,小明的操作如下

ming$ cd /home/ming/project
ming$ git pull /home/hua/myrepo master

这实现将小华的代码合并到小明的 master 分支上。如果小明自己也做了修改,有冲突的话小明就得手动解决了。

pull 的功能有两个,一是从远程拉取(fetch)修改,二是与当前分支进行合并(merge)。

提交历史查看

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

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

相关文章

《Spring Cloud学习笔记:微服务保护Sentinel》

Review 解决了服务拆分之后的服务治理问题:Nacos解决了服务治理问题OpenFeign解决了服务之间的远程调用问题网关与前端进行交互,基于网关的过滤器解决了登录校验的问题 流量控制:避免因为突发流量而导致的服务宕机。 隔离和降级&#xff1a…

前后端分离下的鸿鹄电子招投标系统:使用Spring Boot、Mybatis、Redis和Layui实现源码与立项流程

在数字化时代,采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过Spring Cloud、Spring Boot2、Mybatis等先进技术,打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过…

【头歌实训】PySpark Streaming 数据源

文章目录 第1关:MySQL 数据源任务描述相关知识PySpark JDBC 概述PySpark JDBCPySpark Streaming JDBC 编程要求测试说明答案代码 第2关:Kafka 数据源任务描述相关知识Kafka 概述Kafka 使用基础PySpark Streaming Kafka 编程要求测试说明答案代码 第1关&a…

netty trojan

参考代码:https://github.com/kdyzm/trojan-client-netty 参考博客: github代码作者的博客:https://blog.kdyzm.cn/post/71 trojan-go介绍:https://p4gefau1t.github.io/trojan-go/developer/trojan/ trojan协议介绍:h…

2014年第三届数学建模国际赛小美赛A题吹口哨解题全过程文档及程序

2014年第三届数学建模国际赛小美赛 A题 吹口哨 原题再现: 哨子是一种小装置,当空气被迫通过开口时会发出声音。哨声的巨大而引人注目,使其对警察和体育裁判来说至关重要。当救生员、迷路的露营者或犯罪受害者使用它们时,它们可以…

创建springboot项目

SpringBoot 就相当于不需要配置文件的SpringSpringMVC。 常用的框架和第三方库都已经配置好了。 maven安装配置 管理项目依赖库的 maven的安装教程网上有很多,这里简单记录一下。 官网下载maven后并解压。 在其目录下添加一个目录repository 然后在conf目录下…

怎么制作有时效的文件二维码?二维码加密、有效期的设置技巧

在制作文件二维码的时候,如何设置文件的有效期呢?一般将文件生成二维码查看能够避免在微信或者QQ云端保存有时间限制的问题,而且扫码阅读文件或者下载文件也更加的方便。那么如果我们想要做一个文件类型的二维码,但是想要设置或者…

QT QString中mid()、left()、right()函数

mid函数原型: QString QString::mid(int position, int n -1) const 返回一个从position开始,长度为n的QString 类型的子串。position不能超出字符串长度,否则返回null;当从position开始的子串长度不够n或n为-1(缺省…

list集合

List集合 List集合的概述 有序集合(也称之为序列),用户可以精确的控制列表中的每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素 与 Set 集合不同,列表通常允许重复的元素 List 集合的特点 有…

Redis分布式缓存之主从哨兵分片集群

Redis主从 数据同步原理 Redis哨兵 Redis分片集群 集群伸缩:在集群中插入或删除某个节点 集群故障转移

vue2、vue3状态管理之vuex、pinia

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、状态管理之vuex1.1 State调用:1.2 Mutation在vuex中定义:在组件中使用: 1.3 Action在vuex中定义:将上面的减…

性能测试-jemeter:安装 / 基础使用

一、理解jemeter 官网-Apache JMeter-Apache JMeter™ JMeter是一款开源的性能测试工具,主要用于模拟大量用户并发访问目标服务器,以评估服务器的性能和稳定性。 JMeter可以执行以下任务序号用途描述1性能测试通过模拟多个用户在同一时间对服务器进行…

【Graylog】通过Pipelines在Graylog生成IP地理位置信息

序 在当今数字化时代,随着网络攻击的不断增加和全球化的用户活动,了解IP地址的地理位置信息变得越来越重要。对于网络安全和营销策略来说,掌握IP地址的地理信息可以带来许多好处。 接下里将介绍如何通过Graylog的Pipelines功能,…

linux开放tomcat 8080端口

1、查看8080是否开放 firewall-cmd --query-port8080/tcp查看已开启的端口 firewall-cmd --list-ports开启防火墙 systemctl start firewalld2、永久开放8080端口 firewall-cmd --zonepublic --add-port8080/tcp --permanent3、重加载(重启防火墙) …

如何开发一个类似美团小程序商家入驻

上线类似美团的小程序可以推动商业生态系统的优化和升级。小程序可以连接商家、用户和平台,促进信息流通和交易,提高整个生态系统的效率和效益。今天,我们分享如何开发一个类似美团小程序商家入驻的平台。大家点个关注点个赞,我们…

本地登陆页面:对本地搜索词进行排名的策略

位置着陆页没有得到足够的尊重。 你用你的姓名、地址、电话号码和工作时间来设置它们。也许您嵌入了用于行车路线的 Google 地图。 也许你写了一些没人会读的副本,如果你有多个位置,你在每一页上重复相同的副本,只是更改位置名称。 如果你…

408数据结构错题知识点拾遗

个人向错题相关部分整理,涵盖真题、模拟、课后习题等。 408相关: 408数据结构错题知识点拾遗 408数据结构常考算法基础训练等待完善 408计算机组成原理错题知识点拾遗408操作系统错题知识点拾遗等待完善408计算机网络错题知识点拾遗 408计算机网络各层协…

DRF从入门到精通五(路由组件、认证组件、权限组件、频率组件及认证、权限源码分析)

文章目录 一、路由组件REST framework提供了两个routeraction装饰器 二、认证组件(Authentication)三、权限组件(Permissions)内置权限类 四、频率组件(Throttling)五、权限组件源码分析六、认证组件源码分析 一、路由组件 对于视图集ViewSetMixin,我们除了可以自己…

JavaWeb的Servlet的入门和使用方法

1 什么是Servlet Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单的用户输…

Elasticsearch:无需搜索 “Christmas” 即可找到有关圣诞节的书籍

随着假期的临近,我期待着变得舒适,拿起一本新书,享受轻松的时光。 但是使用搜索栏在线发现图书并不像看起来那么容易......大多数零售搜索引擎仅依赖于关键字搜索,当我们确切地知道我们正在寻找什么书名时,这很好&…