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. pngquant 在 Windows 上压缩带中文路径的 png 图片

    pngquant 是一个优秀的 png 压缩工具,但是在 Windows 上不支持目录中带有 unicode 字符(例如中文)的文件.所以要用一个折中的办法(即标准输入)让 pngquant 压缩目录 ...

  2. 2022-08-29:以下go语言代码输出什么?A:10 10;B:10 19;C:19 10;D:19 19。 package main import ( “fmt“ ) func he

    2022-08-29:以下go语言代码输出什么?A:10 10:B:10 19:C:19 10:D:19 19. package main import ( "fmt" ) fun ...

  3. 2022-07-17:1、2、3...n-1、n、n、n+1、n+2... 在这个序列中,只有一个数字有重复(n)。 这个序列是无序的,找到重复数字n。 这个序列是有序的,找到重复数字n。

    2022-07-17:1.2.3-n-1.n.n.n+1.n+2- 在这个序列中,只有一个数字有重复(n). 这个序列是无序的,找到重复数字n. 这个序列是有序的,找到重复数字n. 答案2022-07 ...

  4. 2020-12-14:mysql中,可重复读是怎么实现的?

    福哥答案2020-12-14: [答案来自此链接:](http://bbs.xiangxueketang.cn/question/735) 快照读:就是select.MVCC.select * fro ...

  5. 2022-06-21:golang选择题,以下golang代码输出什么?A:3;B:4;C:100;D:编译失败。 package main import ( “fmt“ ) func

    2022-06-21:golang选择题,以下golang代码输出什么?A:3:B:4:C:100:D:编译失败. package main import ( "fmt" ) fu ...

  6. 2021-10-12:验证回文串。给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串 。输入: “A man, a plan

    2021-10-12:验证回文串.给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写.说明:本题中,我们将空字符串定义为有效的回文串 .输入: "A man, a ...

  7. linux FTP文本传输

    目录 一.文本传输协议 二.连接方式 三.程序安装 四.黑名单和白名单 五.实验 1.实验一:匿名用户下载与上传 2.实验二:关闭匿名用户登录,允许普通用户登录在家目录上传和下载 3.实验三:禁止用户 ...

  8. Python潮流周刊#3:PyPI 的安全问题

    你好,我是豌豆花下猫.这里记录每周值得分享的 Python 及通用技术内容,部分为英文,已在小标题注明.(标题取自其中一则分享,不代表全部内容都是该主题,特此声明.) 文章&教程 1.掌握Py ...

  9. Java方法的概念以及方法的四种语法

    一.方法 方法的概念 ​ 将一个功能抽取出来,放在类中的大括号中,形成一个独立的功能,当需要使用该功能时,则调用它,这样可以增强代码的复用性(重复利用),并解决代码的冗余现象. 方法的语法: ​ [访 ...

  10. WPF中小的技能点 1

    图片圆角的处理方式       采用boder里background背景设置图片并设置对应的圆角 <Border CornerRadius="20">      < ...