无linux基础也能熟练掌握git的基本操作
git是一个用来管理项目的工具,它的远程仓库有github、gitee、gitlab代码托管中心,既可以用于个人共享代码,又可以用于团队进行项目的协作与发布,那么我们一起来了解一下git该如何使用~
git在在本地电脑是分成三部分的,工作区,暂存区和本地库,每一个区域的作用如下
首先,想要使用git来管理我们的项目,那本地必定是有git环境,安装完git之后,在任何地方都可以右键 git bash here 来打开命令行窗口, 找到一个合适的文件夹,把它当作git的仓库,使用
git init // 初始化项目
此时,文件夹里有一个 .git 文件,这代表git的初始化完成了。
仓库初始化完成,如果没有项目,那git就没有用武之地,那我们接着先创建一个hello.txt,此时里面写了一些项目的描述,一旦创建、修改的文件都是在git的本地区的,首先我们需要将它提交到暂存区、再提交到本地库,这样才能对该文件的各个版本进行管理,更好的对项目进行迭代、更新、回退,那么就需要以下这些指令
git config --global user.name alice // 全局下设置用户名, 只需设置一次
git config --global user.email alice@hello.com // 全局下设置用户邮箱, 只需设置一次
git status // 查看本地文件的状态,红色表示在工作区文件有新增/修改,绿色表示在暂存区文件有新增/修改
git add . // 使用.表示提交所有文件, 也可以写上具体提交文件
git commit -m "add file" // ""表示的是备注信息
修改和新增所作的操作是一样的,git命令行工具的提示会有不同,当文件多次提交到本地库之后,本地库对于该文件的记录就会有多条,此时我们可能想要看一下总共提交了多少个版本,可以通过以下方式查看历史记录
git log // 将完整的历史记录展示出来, 包括时间、作者以及提交的备注信息
git log --pretty=oneline // 将历史记录以一行展示
git log --oneline // 将历史记录以一行展示, 同时截取代表文件的前七位哈希值
git log reflog // 将历史记录以一行展示, 截取代表文件的前七位哈希值, HEAD@{0}表示当前位置
如果某次修改出了bug,需要回退代码,那么可以用以下的方式
git reset [回退方式] [版本]
回退方式有以下几种
--hard 代表工作区暂存库和本地区都回退
--mixed 代表将暂存区和本地库的版本回退,此时输入 git status 查看文件状态时,提示文字会标为红色,因为工作区和暂存区的文件不一致了
--soft 代表只将工作区的版本回退,此时输入 git status 查看文件状态时,提示文字会标为绿色,因为工作区与暂存区的文件一致,只是暂存区和本地库版本不一致 版本有以下几种方式
(1) 直接使用代表版本的哈希值
(2) HEAD代表的是当前版本,通过^来表示向前一个版本, 多少个^代表向前回退多少个版本
(3) 通过~加上数字来表示向前n个版本
如果我们不需要某些文件了,想要删除掉,删除文件不是在直接删除,而是会新增一条记录
git rm [文件] // 同时还需要提交暂存区和本地库
git add .
git commit -m "remark"
如果想查看当前版本与上一版本的差异,可以使用这样的命令
git diff [文件名] / git diff [某一版本] [文件名]
// 在命令行工具中通过 + 和 - 的方式来区分增加和删除的内容
在开发的过程当中往往不只有一个分支,经常情况下会设置主分支、测试分支、开发分支,当开发完成之后,再将自己创建的分支代码合并到主分支,我们可以用以下方式来创建分支及合并
git branch -v // 查看分支版本
git branch test // 创建一个名为test的分支
git checkout test // 切换到test分支
// 在当前分支将内容编写完成之后,同样需要将代码提交到暂存区和本地库 git add . / git commit -m "test branch add info"
git checkout master // master 是主分支的默认名称
git merge test // 将test分支上的内容合并到master分支上
// 当合并的文件与被合并的文件发生冲突时,命令行工具右侧展示的分支版本名称为(master | merging),此时需要自行去冲突文件进行修改,修改完成再执行 add 和 commit 操作
上面都是git在本地环境的基本操作指令,我们经常还会将代码上传到 github、gitee、gitlab这些代码的托管中心,那么我们怎么通过这些托管中心来进行团队的协作开发呢?这里以github为例,从两方面来说,如果开发者都是团队成员,简单操作的流程如下所示
创建者将本地代码push到远程库,团队成员接收邀请加入团队,然后通过git地址clone代码到本地,然后当代码进行了修改之后,再将更新的代码 add / commit 提交到本地库之后再push到远程库,创建者再通过pull操作将远程库的代码取回,pull其实是fetch+merge的两个操作,fetch代码取回代码,merge表示合并。具体的操作流程如下
创建者
git remote -v // 查看远程库的别名地址
git remote add origin https://github.com/xxx/yyy.git // 此处是将xxx这个git地址设置别名为origin, 以后拉取和推送这个git的代码可以直接使用别名 origin
git push origin master // 将代码推送到别名为origin的master分支 团队协作者
git clone https://github.com/alice/xxx.git // clone完成了三步操作, 将git代码取回到本地, 初始化git仓库, 设置remote别名
// 本地进行代码开发之手,需要 add / commit 到本地库
git push origin master 创建者
git pull origin master // 将远程库的代码取回,等同于 git fetch origin master + git merge origin/master 两个操作
有多个团队成员的话,大体流程也和上述一致,主要就是提交到本地库,推送以及合并。
还有一种团队协作的情况,贡献代码的同学并不是团队的成员,而是外部支援,此时就来到跨团队协作方式
创建者的push代码的方式没有变化,而跨团队协作者因为不是团队成员,无提交代码的权限。
所以首先要要进行fork操作,相当于在自己的git仓库上建立一个和对方一样的项目,然后跨团队者再从自己的git仓库上将代码clone下来,修改完成 add / commit 操作提交本地库之后,在github上点击pull requests操作。
最后创建者再进行审核,代码审核无误且有效之后再自己的仓库中查看 pull request中通过merge将两个人的代码合并
以上就是git的整体流程和基本操作
无linux基础也能熟练掌握git的基本操作的更多相关文章
- CentOS 安装 Mongodb详解 --- 无Linux基础
先去官方下载离线安装包:https://www.mongodb.com/ ftp连接一下服务器,把离线包上传上去 XShell连接一下: 解压文件(你输一点就可以按tab键,它会自动补全):tar - ...
- Linux基础入门教程
Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux:Linux初级,也就是入门linux前提是需要有一些计算机硬件相关的知识或是有一下 ...
- linux基础知识的总结
例如以下内容是我对linux基础知识的总结,由于本人在初期学习linux的时候走了不少的弯路,对于基础的掌握耗费了不少的时间,所以为了后来者对linux的基础部分有个清晰的了解,特对基础知识进行了总结 ...
- Linux 基础命令、文档树 和 bash
最近发现了一个总结得更好的:bash cheatsheet 本文只是我对 linux 基础学习的一个总结,可能仅适用于复习用.算是我的 Linux 备忘录. 最基础 tab 补全 * 通配符 ctrl ...
- 【Linux系列】Linux基础知识整理
Linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识. 本篇日志是我学习Linux过程中的简单记录和总结.本着"理论够用,实践为主"的 ...
- 实验一 Linux基础与Java开发环境
实验一 (一)实验内容 基于命令行和IDE(Intellj IDEA 简易教程http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程序编辑.编译 ...
- [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...
- 原来今天是感恩节-Linux基础继续&MySQL和PHP
hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...
- Linux基础3(文件权限)
文件权限 1.普通权限 (登陆用户对文件或目录的读写执行的权限) 普通权限对管理员用户无效 文件和目录 都有4中类型的用户u 所有者 : 文件.目录的创建者g 所属组 : 文件.目录属于的用户组o 其 ...
- 实践一:Linux基础实践
一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...
随机推荐
- Vue3 +element-plus+ wangEditor 富文本编辑器+前端七牛云上传
我用的vue3,element-plus ,没用ts 搭建wangEditor 参考 地址 https://www.cnblogs.com/xbxxf/p/16791084.html 七牛云安装参考地 ...
- 2020-10-11:一条sql语句执行时间过长,应该如何优化?从哪些方面进行优化?
福哥答案2020-10-11:#福大大架构师每日一题# 简单回答:执行计划调优.语句调优.索引调优.设计调优.业务调优. 中级回答:时间有限,回答得不全面.1.执行计划调优熟读执行计划,十大参数. 2 ...
- pycharm报错提示:无法加载文件\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。
pycharm报错提示:无法加载文件\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本. 解决办法 1.终端输入get-executionpolicy,回车返回Restr ...
- 数据库优化案例—某市中心医院HIS系统
记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...
- V8是如何执行JavaScript代码的?
前言 一般来讲,电脑是不能直接运行我们的javascript代码的,它需要一个翻译程序将人类能够理解的编程语言 JavaScript,翻译成机器能够理解的机器语言.目前市面上有很多种 JavaScri ...
- Greenplum 上手
最近因为一个项目需要,我们准备考虑使用 Greenplum 应用在我们的大数据平台中的数据治理项目中,期待着可以在我们的项目过程中有着更大的价值发现 Greenplum 介绍 Greenplum是一种 ...
- 【AGC】云监控日志服务查询不到Logger日志相关问题2
[关键字] AGC.云监控.日志服务 [问题描述] 之前有开发者反馈在使用AGC云监控,填写了Logger日志,但是在云监控的日志服务查不到的问题.具体如下所述: 云函数按要求写了Logger日志, ...
- MySQL锁表解锁表
CREATE TABLE t1 ( id int(11) NOT NULL, val varchar(10) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoD ...
- 【Unity3D】魔方
1 需求实现 绘制魔方 中基于OpenGL ES 实现了魔方的绘制,实现较复杂,本文基于 Unity3D 实现了 2 ~ 10 阶魔方的整体旋转和局部旋转. 本文完整代码资源见→基于 Unit ...
- Transformer编码器和解码器被广泛应用于自然语言处理、计算机视觉、语音识别等领域。下面是一些Trans
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.1.1 编码器 2.1.2 解码器 2.2 技术原理介绍 2.2.1 编码器 2.2.2 解码器 2.3 相关技术比较 3. 实现步骤 ...