无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. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...
随机推荐
- 【python爬虫】bilibili每周必看页面视频图片爬取
此博客仅作为交流学习 对于使用bilibili上学习和娱乐的小伙伴们有时会看到视频博主发布的视频封面好看想要得到,但是苦于没有方法,这次我用python来爬取bilibili每周必看页面视频图片. 首 ...
- 2023-03-25:若两个正整数的和为素数,则这两个正整数称之为“素数伴侣“。 给定N(偶数)个正整数中挑选出若干对,组成“素数伴侣“, 例如有4个正整数:2,5,6,13, 如果将5和6分为一组的
2023-03-25:若两个正整数的和为素数,则这两个正整数称之为"素数伴侣". 给定N(偶数)个正整数中挑选出若干对,组成"素数伴侣", 例如有4个正整数:2 ...
- Play to Earn Games
什么是P2E游戏 P2E 游戏(Play to Earn Games)指的是在区块链游戏中,玩家可以通过完成任务.收获资源.挖矿或游戏中的其他活动以获得成就来赚取游戏内的资产(NFT)或代币(Toke ...
- 记一次,使用python实现一键在爱发电发布带图片的动态
1.背景 本人喜欢转载一些youtube上的视频到b站上面,然后就会有些观众想要视频的封面,那我总不可能一个一个发吧,太麻烦了.故打算将资源发布到爱发电上面.但是爱发电却没有公开对应的api,只能自己 ...
- 蓝桥杯真题 k倍区间
考点: - 利用前缀和求子列和 - 同余作差是模的倍数 题目概要 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j)之和是K的 ...
- 2015年蓝桥杯C/C++大学B组省赛真题(加法变乘法)
题目描述: 我们都知道:1+2+3+ ... + 49 = 1225 现在要求你把其中两个不相邻的加号变成乘号,使得结果为2015 比如: 1+2+3+...+10*11+12+...+27*28+2 ...
- vue项目提示TypeError: e.call is not a function
最近运行vue项目老是提示TypeError: e.call is not a function 如上一运行到该页面就会提示这个错误,虽然页面功能都没受到影响,但是这个必定会给后期发布后的项目带来极大 ...
- 快速上手kettle(一)壶之简介
一.前言 最近由于工作需要,需要用到kettle工具进行数据迁移转换.特意找资料学习了一下,kettle基本操作算是学会了. 所学的也结合实际工作进行了验证.为了防止以后用到忘记了,便写了几篇文章记录 ...
- Java关键字break、continue 、return的区别,嵌套循环,数组的概念以及数组案例
一.关键字 break.continue .return的区别 1.break : 用于在switch..case中放置语句块穿透, 用于跳出循环 // 从1-100 遇到7的倍数 break f ...
- DB事物
1.事物概念:一组逻辑操作单元 始数据从一种状态变换到另一种状态事物处理:所有事物 都作为一个工作单元来执行 , 即使出现了故障 都不能改变这种执行方式, commint提交之后 这些修改就永久的保存 ...