Git使用本地仓库之基本操作--版本回退,后悔怎么办,撤销未提交的修改_git回滚之后后悔了-程序员宅基地

技术标签: git学习使用  

 

1、Git是什么?

一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样我们可以选择在合适的时间将本地版本推送到统一的版本管理服务器 ②Git每次会提取整个代码仓库的完整镜像,相当于对整个代码仓库都进行了一次备份,这样计时版本服务器除了问题,我们可以直接采用本地仓库恢复!结合本地版本管理功能,远程版本管理服务器出问题了,我们依然能继续写自己的代码,当他恢复的时候我们再提交我们的本地版本! Git研发初期是为了更好的管理Linux内核,不过现在已经广泛应用于各种项目中!


 

2、安装Git

如果你的系统是Linux的话,直接打开shell输入:

apt-get install git

当然,大部分的系统估计都是Windows,这就需要我们到网上下载一个Git For Window了,可到下述网站下载: https://git-for-windows.github.io/ 点击 Download,跳转到 Github ,下载对应安装包即可!

点击后进入页面,下载如下文件即可

或者直接下载目前最新版2.7.0: v2.7.0.windows.1 接提示安装就可以了~ 接下来你可以找到Git Gui然后开始玩Git,不过如果以后换到其他平台上,没有图形化界面你就寸步难行了! So,如果你有兴趣的话,我们来玩命令行,以后换了系统也能正常的玩Git!


 

3、玩转Git命令行

当然Git肯定是搭配着GitHub玩才够味的,不过先来学习一些本地的指令先把!当你安装完Git后我们可以在任意位置右键,点击Git bash打开我们的Git命令行!你可以可以点击Git Init Here直接在当前目录下创建一个代码仓库,又或者点击Git Gui打开Gui的图形操作页面!


 

4、创建代码仓库

Step 1:先配置下我们的身份吧,这样在提交代码的时候Git就可以知道是谁提交的,命令如下:

git config --global user.name "coder-pig"
git congif --global  user.email [email protected]

配置完成后,我们可以再次输入,不包括名称,可以看到我们已经配置成功了

Step 2:找个地方创建我们的代码仓库,然后我创建了一个新的项目:TestForGit,来到工程的目录下,右键,打开我们的Git Bash,键入下述指令完成代码仓库的建立!另外这个代码仓库其实是用来保存版本管理所需的一些信息,我们本地提交的代码都会提交到代码仓库中,于是乎我们可以选择还原到某个版本,当然,如果需要的话,我们还可以将保存在代码仓库中的代码推送那个到远程仓库中!比如GitHub!

git init

一个简单的代码,代码仓库就创建完毕了!继续输入:ls - al可以看到下目录下有个.git的文件夹就是他了!

也可以打开工程目录,同样看也看到.git文件夹;如果我们想删除代码仓库只需把这个文件夹删掉即可!


 

5、提交本地代码

创建完代码仓库,接下来说下如何提交代码,我们是先用add命令把要提交的内容都加进来,然后commit才是真的去执行提交操作!命令例子如下,你可以一次次慢慢添加,当然也可以全部提交,直接git add .即可完成!我们现在工程目录下创建一个readme.txt的文件试试,随便写点东西,然后依次输入下述指令:

 git add readme.txt
 git commit -m  "Wrote a readme file"

输入命令试试:

当然如果你可以add多个文件后再一次性commit,不过如果我们改动的文件很多的话,我们可以git add .一次添加全部,但有一些是几百年都不变一次的又或者自动生成的,比如lib,gen,bin文件夹等等,我们可以在代码仓库的根目录下创建一个名为.gitignore的文件,然后编辑里面的内容,把不需提交的文件忽略掉!

接着输入要提交时忽略的文件内容即可!

那么我们git add .的时候,这里的文件就不会add,另外可能你会觉的commit后面写-m "xxx"很麻烦,想偷懒,但还是写上吧!输入的是本次提交的一些声明,比如自己修改了些什么!就好像写代码的时候,你偷懒不写注释,过几天你连自己写的什么鬼都不知道...


 

6、查看修改内容

好吧,前面我们用git add提交了整个项目到本地仓库,接下来我们改点东西,然后使用git status可以查看修改的部分,比如,我们删掉MainActivity.java里的菜单的代码以及多余的菜单相关的包!

他就会提示我们哪些文件发生了改变,但是还没有提交,如果我们想看下具体更改了什么,我们可以用到git diff命令,另外,按Q可以退回命令行输入!


 

7、查看提交记录

当然随着我们项目的深入,Commit的次数也会越来越多,可能你早已忘记每次提交都修改了什么内容,没事,Git帮你记着呢,使用git log即可查看历史提交信息!键入

git log

回车:

我们取其中一小部分来分析:

commit defd8af52be5183dfceb3e5cf23f78ea47d013b0Author: coder-pig <[email protected]>Date:   Fri Jun 19 17:00:36 2015 +0800MainActivity Delete Menu

依次是:

  • 此次提交对应的版本号
  • 提交人:姓名 邮箱
  • 提交的时间
  • 提交版本修改的内容:就是我们commit -m "xxx"里的xxx

8、撤销未提交的修改

比如我们刚提交了一个版本,然后又乱七八糟地写了一堆东西,突然发现不小心误删了一些东西,然后ctrl + s保存了,这个时候是不是欲哭无泪,不过有Git,只需一个checkout命令即可撤销更改,当然是你还没add的情况,比如我们在MainActivity里随便添加一条语句,然后ctrl + s保存代码!

然后命令行键入:git diff:

嗯,这里可以看到我们改的内容,我们可以回去把这句代码删掉,但是如果改的有上千行你怎么改,于是乎这个时候我们可以使用

<strong>git checkout src/com/jay/example/testforgit/MainActivity.java</strong>


然后会神奇的发现,我们新写的代码没了!duang一下就没了,不信你可以自己试试

当然,如果我们已经add了的话,那么checkout是没任何作用的,我们要先取消添加才可以撤回提交,使用下述指令:

git reset HEAD src/com/jay/example/testforgit/MainActivity.javagit checkout src/com/jay/example/testforgit/MainActivity.java


9、版本回退

第五点我们教了大家撤销未提交的修改,但加入提交了,我们想回退到之前的某一个版本怎么办? 第四点中我们可以通过git log查看我们的提交记录,我们需要从这里获取一个版本号,一般我们只需要前七位字符就够了;另外在Git中,用HEAD代表当前版本,上一个版本就是HEAD^,再上一个版本就是HEAD^^依次类推!我们先Git Log看下版本历史先!

我们回到前一个提交的版本吧,依次键入下述指令:

git reset --hard HEAD git reset --hard HEAD
git log

这时看下我们的控制台:

可以看到我们已经回退到了前一个版本了,当然你可以直接这样写:

git reset --hard ad2080c



就是这么简单!回退后,你突然后悔了,想回退回新的那个版本,可是遗憾的是,你键入git log却发现没有了最新的那个版本号,这怎么办呢... 没事,Git中给你提供了这颗"后悔药",Git记录着你输入的每一条指令呢!键入:

git reflog


你会发现,版本号就在这里:

然后键入:

git reset --hard ad2080c



 

 

后面会详细介绍如何使用GitHub搭建远程仓库。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gnnulzy/article/details/52413698

智能推荐

概率论总结_p(∪n i=1ai) ≤ pn i=1 p(ai)-程序员宅基地

文章浏览阅读823次,点赞2次,收藏13次。随机事件与概率基本概念随机试验试验可以在相同的条件下重复进行试验所有可能结果是明确可知道的,并且不止一个每一次试验会出现哪一个结果,事先并不确定事件随机事件A,B,C...A,B,C...A,B,C...必然事件Ω\OmegaΩ不可能事件∅\varnothing∅样本空间样本点:随机试验的每一个可能结果称为样本点,记为ω\omegaω样本空间:样本点的全体组成的集合称为样本空间,记为Ω\OmegaΩ基本事件:由一个样本点构成的事件称为基本事件随机事件AAA是由若干个基本_p(∪n i=1ai) ≤ pn i=1 p(ai)

Nuxt中使用Vuex(新版,简单入门)_nuxt vuex-程序员宅基地

文章浏览阅读8.5k次,点赞2次,收藏17次。1.前言因为我学的是后端开发,前端不是很厉害,如果有什么不对的地方请评论指出,谢谢!看这篇文章你需要对Vuex有一定的了解 官方链接做课设的时候使用到了Nuxt框架,需要做登录,也就结识了Vuex,其实以前就学过Vuex,但是一直不知道这个东西有什么优势,特点。这次我在实际使用中就用到了一个非常好用的特点,官方的解释如下:Vuex 的状态存储是响应式的。当 Vue 组件从 store ..._nuxt vuex

vue点击按钮改变按钮样式_vue点击按钮切换样式-程序员宅基地

文章浏览阅读3.7k次。【代码】vue点击按钮改变按钮样式。_vue点击按钮切换样式

图论学习-最短路模型-程序员宅基地

文章浏览阅读2k次,点赞20次,收藏44次。这里只是我对于最短路模型学习的一个记录,不正确的地方希望大家指出。文章目录最短路模型一、 什么是最短路?1.1 概念1.2 基本术语二、主要模型2.1 dijkstra2.1.1 步骤2.1.2 画图理解2.1.3 为什么dijkstra不能处理负权边?2.2 堆优化的dijkstra2.3 bellman_ford2.3.1 三角形不等式2.3.2 步骤2.3.3 代码实现2.4 spfa2.4.1 步骤2.4.2 代码实现2.4.3 主要问题2.5 floyd三、练习题目四、参考最短路模型一、 什_最短路模型

20210409因为内存条的兼容问题引起的编译aosp10莫名的异常_aosp 编译 segmentation fault-程序员宅基地

文章浏览阅读2.7k次。20210409因为内存条的兼容问题引起的编译aosp10莫名的异常内存使用2条32GB的内存条(3000MHz)https://item.jd.com/10025021240070.html酷兽(CUSO)ddr4 32g台式机内存 32g 3000MHz 酷兽夜枭系列【京选存储.稳定兼容】酷兽存储.实惠装机能手(内存终身保固.以换代修)京 东 价¥ 769.00 降价通知32g 3000MHz电脑使用的:dell的Inspiron-3880rootroot@rootroot-Ins_aosp 编译 segmentation fault

SSL_1072&&P2347【砝码称重】-程序员宅基地

文章浏览阅读72次。砝码称重题目设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),要求:输入方式:a1 a2 a3 a4 a5 a6(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个)输出方式:N(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)Sample Input1 1 0 0 0 0(注:下划线表示空格)Sample Output3//表示可以称出1g,2g,3g三种不同的重量。解析啊就这?!堂堂1996年分区联赛提高组第

随便推点

BZOJ 2301 [HAOI2011]Problem b(莫比乌斯反演)_[bzoj2301][haoi2011]-程序员宅基地

文章浏览阅读139次。题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2301咱也不知道莫比乌斯函数,莫比乌斯反演怎么来的,直接用就得了...①莫比乌斯函数:else表示质因子分解后有质因子出现一次以上莫比乌斯函数跟着欧拉筛跑一遍就可以求出来②莫比乌斯反演的两种写法:其中f(i)是题目询问的东西,你发现直接求求..._[bzoj2301][haoi2011]

SpringBoot多文件压缩包下载(多附件zip格式)_springboot下载多个文件-程序员宅基地

文章浏览阅读7.4k次。文章目录前言 : 此 Demo 为 Windows 环境下演示,部署到服务器的话路径需改成服务器的路径。一、自定义工具类DownLoadZipUtil二、Dao层分析与sqlmapper层代码(DAO)三、Service层代码三、Controller层代码注意 : 文件的打包下载这里用到了临时路径,下面只需要关注方法ZipTempDownLoad即可,下面的代码实际需根据自己的逻辑需求去写。四、前端部分代码,此Demo前端用的vue五、效果展示前言 : 此 Demo 为 Windows 环境下演示,部_springboot下载多个文件

meta SEO(给搜索引擎看的meta标签 name keywords)_搜索 <meta name="keywords" content="氢能源、燃料、电池技术、清洁能源-程序员宅基地

文章浏览阅读1.8k次。<!-- 你挂载到域名上才有用 --> <meta name="keywords" content="游戏,音乐,体育">_搜索

CVPR2019 主动学习方面论文_cvpr 2019 active learning-程序员宅基地

文章浏览阅读498次。1 Learning Loss for Active Learning 论文下载直接预测样本的LossCVPR2019 论文接受列表_cvpr 2019 active learning

通信原理chapter2总结(内含多径效应和多普勒效应MATLAB仿真)_多普勒效应和多径效应 建模-程序员宅基地

文章浏览阅读4.8k次,点赞12次,收藏67次。第二章总结1.信道:通信系统中信道是指发送设备到接收设备之间信号传输的通道,是通信系统中的一个重要组成部分。2.分类:1)按照传输媒介:无线信道和有线信道;2)根据信道研究对象不同:调制信道,编码信道3)按照信道的冲激响应是否随时间变化:恒参信道,随参信道4)按照信道输入和输出符号是否离散:离散信道,连续信道3. 简介1)有线信道:利用人造的传导电或光信号的媒质来传输信号,如明线,..._多普勒效应和多径效应 建模

富士通01018z平板电脑评测_微软Surface Pro 7详细评测:仍旧是最好的二合一平板电脑...-程序员宅基地

文章浏览阅读1k次。今年10月初,当人们还沉浸在国庆放假的喜悦中的时候,大洋彼岸的微软在纽约召开新品发布会,一口气发布了6款Surface设备,除了惊艳的双屏电脑Surface Neo以及传说中的“Surface Phone”以不一样的形态和消费者见面之外,升级版的微软Surface Pro 7也是本次发布会的最大看点之一,微软Surface Pro 7跟着英特尔的节奏升级到了10代酷睿处理器,另外的一个看点则是增加..._farq01018z

推荐文章

热门文章

相关标签