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的基本操作的更多相关文章

  1. CentOS 安装 Mongodb详解 --- 无Linux基础

    先去官方下载离线安装包:https://www.mongodb.com/ ftp连接一下服务器,把离线包上传上去 XShell连接一下: 解压文件(你输一点就可以按tab键,它会自动补全):tar - ...

  2. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux:Linux初级,也就是入门linux前提是需要有一些计算机硬件相关的知识或是有一下 ...

  3. linux基础知识的总结

    例如以下内容是我对linux基础知识的总结,由于本人在初期学习linux的时候走了不少的弯路,对于基础的掌握耗费了不少的时间,所以为了后来者对linux的基础部分有个清晰的了解,特对基础知识进行了总结 ...

  4. Linux 基础命令、文档树 和 bash

    最近发现了一个总结得更好的:bash cheatsheet 本文只是我对 linux 基础学习的一个总结,可能仅适用于复习用.算是我的 Linux 备忘录. 最基础 tab 补全 * 通配符 ctrl ...

  5. 【Linux系列】Linux基础知识整理

    Linux操作系统在服务器领域广泛的使用到,作为一个后台开发工程师很有必要了解Linux相关的知识. 本篇日志是我学习Linux过程中的简单记录和总结.本着"理论够用,实践为主"的 ...

  6. 实验一 Linux基础与Java开发环境

    实验一 (一)实验内容 基于命令行和IDE(Intellj IDEA 简易教程http://www.cnblogs.com/rocedu/p/4421202.html)进行简单的Java程序编辑.编译 ...

  7. [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)

    linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...

  8. 原来今天是感恩节-Linux基础继续&MySQL和PHP

    hi 原来今天是感恩节.虽然一直没有过这个节日的习惯,但仅仅是听到感恩的消息,都能想到一幅幅画面.愿大家安好! 下午开题会议还是有所收获,悄悄的,就变向那个不喜欢自己的人了. 一.Linux基础(二) ...

  9. Linux基础3(文件权限)

    文件权限 1.普通权限 (登陆用户对文件或目录的读写执行的权限) 普通权限对管理员用户无效 文件和目录 都有4中类型的用户u 所有者 : 文件.目录的创建者g 所属组 : 文件.目录属于的用户组o 其 ...

  10. 实践一:Linux基础实践

    一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...

随机推荐

  1. 大家都在用-神奇的Markdown格式

    概述 Markdown 是一种轻量级标记语言,它可以使我们专注于写作内容,而不用过多关注排版,很多博主.作家等都用它来撰写文章~ 本文将给各位小伙伴介绍 Markdown 语法的使用,本篇文章索奇就是 ...

  2. 自建CA和公共CA有什么不同?

    据统计,全球有数百个公共CA,通常它们是按国家地区进行划分的.这类CA受大众的广泛认可和使用,也被称为公共信任的证书颁发机构.但是由于一些大型企业拥有许多站点,为了更轻松高效的管理以及考虑到维护成本, ...

  3. 2023-01-04:有三个题库A、B、C,每个题库均有n道题目,且题目都是从1到n进行编号 每个题目都有一个难度值 题库A中第i个题目的难度为ai 题库B中第i个题目的难度为bi 题库C中第i个题目

    2023-01-04:有三个题库A.B.C,每个题库均有n道题目,且题目都是从1到n进行编号 每个题目都有一个难度值 题库A中第i个题目的难度为ai 题库B中第i个题目的难度为bi 题库C中第i个题目 ...

  4. 2022-04-11:给定一个正数数组arr,其中每个值代表砖块长度, 所有砖块等高等宽,只有长度有区别, 每一层可以用1块或者2块砖来摆, 要求每一层的长度一样, 要求必须使用所有的砖块, 请问最多

    2022-04-11:给定一个正数数组arr,其中每个值代表砖块长度, 所有砖块等高等宽,只有长度有区别, 每一层可以用1块或者2块砖来摆, 要求每一层的长度一样, 要求必须使用所有的砖块, 请问最多 ...

  5. 11g ADG级联备库基础测试环境准备

    客户通过duplicate生产备库的方式创建cascade备库. 发现每次都会遇到两个文件报错,ORA-17628: Oracle error 19505错误,且每一次跑,报错文件不一样. 现在想帮客 ...

  6. 密码暴力破解工具——九头蛇(hydra)使用详解及实战

    转载出处:https://zhuanlan.zhihu.com/p/540998739 二.使用方法 语法:Hydra 参数 IP 服务 参数: -l login 小写,指定用户名进行破解 -L fi ...

  7. C#设计模式19——装饰器模式的写法

    装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许你动态地给一个对象添加一些额外的职责,而不需要修改这个对象的代码. What(什么) 装饰器模式是一种结构型设计模式,它允许 ...

  8. Anaconda3安装(Win_x64)

    一.获取Anaconda3 链接:https://pan.baidu.com/s/14Imqk1KBsB84Mwzebpv2BA?pwd=no2x 提取码:no2x --来自百度网盘超级会员V4的分享 ...

  9. WPF中有中心点的slider滑动条

    想要实现的效果 原生滑动条 需要认识一下滑动条的组成 在原生控件中生成"资源字典"对应的样式 然后在track所在的列进行添砖加瓦 由于track在row="1" ...

  10. 【建议收藏】Log4j配置详解

    大家在日常开发中必然会使用到日志组件,Log4j是Java方向上比较常用的日志组件,今天给大家分享下Log4j支持的配置项,强烈建议收藏,以便配置时查看 #展示log4j各种配置,私有部分见文件中注释 ...