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. Prism Sample 1

    这个样例版本上已经过时了,但与8.1版本仍然兼容. 在本版本中,指定启动项: App.xaml.cs: protected override void OnStartup(StartupEventAr ...

  2. selenium 执行js脚本

    使用 selenium 直接在当前页面中进行js交互 使用selenium 执行 Js 脚本 要使用 js 首先要知道 js 怎么用,现在举个简单得例子,就用12306举例子, 它的首页日期选择框是只 ...

  3. 推荐一个.Ner Core开发的配置中心开源项目

    当你把单体应用改造为微服务架构,相应的配置文件,也会被分割,被分散到各个节点.这个时候就会产生一个问题,配置信息是分散的.冗余的,变成不好维护管理.这个时候我们就需要把配置信息独立出来,成立一个配置中 ...

  4. MAUI开发Android程序使PDA扫码广播消息转发至Web页面

    前言 公司系统的手持终端(PDA)是用的Vue写的前端代码 在PDA上用浏览器直接打开Web页面 PDA扫码的时候,输出模式直接用模拟键盘按键的方式输出 这样在Web页面上,如果一个输入框在当前有焦点 ...

  5. JavaWeb之day01html

    目录: 1.html简介 - html的操作思想(*****) 2.文字标签和注释标签 3.标题标签.水平线标签和特殊字符 4.列表标签 5.图像标签(********) 6.路径介绍(相对路径*** ...

  6. 2021-05-21:给定一个数组arr,先递减然后递增,返回arr中有多少个绝对值不同的数字?

    2021-05-21:给定一个数组arr,先递减然后递增,返回arr中有多少个绝对值不同的数字? 福大大 答案2021-05-21: 双指针.左指针最左,符合条件时右移:右指针最右,符合条件时左移.左 ...

  7. 2022-01-29:连接词。 给你一个 不含重复 单词的字符串数组 words ,请你找出并返回 words 中的所有 连接词 。 连接词 定义为:一个完全由给定数组中的至少两个较短单词组成的字符串

    2022-01-29:连接词. 给你一个 不含重复 单词的字符串数组 words ,请你找出并返回 words 中的所有 连接词 . 连接词 定义为:一个完全由给定数组中的至少两个较短单词组成的字符串 ...

  8. 1406, "Data too long for column 'od_seq' at row 1"

    问题描述:1406, "Data too long for column 'od_seq' at row 1" 问题分析:录入数据长度超出字段的最大限制 解决方法:增加max_le ...

  9. 【Java】连接MySQL问题总结

    前言 最近在学习Java的数据库相关操作,在看视频时自己找资源而产生的一些问题,在此做个总结. 正文 在刚开始学习的时候,你可能跟着老师这样写代码,虽然某些地方已经冒出了红色的波浪线,但你半信半疑的继 ...

  10. Nucleic Acids Research上关于生物医学分析Galaxy平台在几个独立面上的最新发展。 该平台的官方主服务器拥有超过124000注册用户,每月新注册用户~2000。平均而言,......

    本文分享自微信公众号 - 生信科技爱好者(bioitee).如有侵权,请联系 support@oschina.cn 删除.本文参与"OSC源创计划",欢迎正在阅读的你也加入,一起分 ...