Git的状态转换


         近期公司用Git来管理代码,用起来是要比svn爽一些。就是刚接触的时候比較痛苦,特别是那些状态(版本号的提交/合并/回退)。差点把我搞晕了。

如今回过头来总结一下,就清楚多了。

         就本地仓库来看。Git能够分成5个不同的状态。能够通过$ git status来查看。这五个状态能够互相转换。详细操作详见以下的“版本号回退/整合”。

         当然。有些文件非常实用。不能删除又不能提交,如Eclipse的项目文件. project等。

这样的情况最好就是选择把他们忽略掉,能够通过改动根文件夹的.gitignore文件,或者update-index来忽略掉。

status

         显示Git的版本号管理信息:$ git status

一般分成3个区域:

a)  Changes to becommitted:暂存区中有改动的文件,但还没commit。

b)  Changes notstaged for commit:工作区中已跟踪且有改动的文件,但还没add;

c)  Untrackedfiles:工作区中未跟踪文件。未纳入Git的管理,每一个新建的文件都属于这样的。

         从上面也能看出非常多操作的提示。

[Changes notstaged for commit]和[Untracked files]都能够通过add把文件加入到[Changes to be committed]。

另外,还能够使文件消失在Git的监控范围(ignore掉),这样status就看不到了。

         也能够使用简略的显示模式:$ git status –s

版本号回退 / 整合

         依据之前工作区/暂存区/版本号库的状态跳转图,可知道回退也是有多种情况。

 

a)     Untrack区回退

         Untrack区存放的是没有纳入Git跟踪的文件。如新创建的还没add的文件。一般Git是不会理会这部分文件的,假设你嫌碍眼,能够通过clean来清楚他们:

         先通过$ git clean –n查看要会清楚的文件,然后把n去掉,清除。也能够在后面指定文件名称,文件-f,文件夹-d

b)     工作区回退

         $ git checkout -- XXX意思是,把XXX文件在工作区的改动所有撤销:先检查暂存区有没有XXX,假设有则把工作区的XXX恢复到暂存区的状态;假设没有,则到版本号库取。

         $ git checkout . 撤销所有工作区的改动。

这个命令事实上挺危急的。一运行记录都被恢复了,改动都被丢弃了。也能够用$ gitcheckout HEAD XXX。回退暂存区和工作区。

c)      暂存区回退

         面的checkout --仅仅是撤销工作区的文件改动,假设我们想撤销暂存区的,就须要使用$ gitreset HEADXXX。它会把暂存区的记录清空掉。

我们通过$ git status就能看到Changes to be committed的内容都跑到Changes notstaged for commit中去了。

也能够用$ git checkout HEAD XXX,回退暂存区和工作区。

         对于暂存区来说。这样的方式和commit都会清空记录。前者直接清空,后者先往版本号库写。再清空。

d)     版本号库回退

         假设你不小心把脏内容commit到本地master了,上面两种方式就无效了。这时候须要回退版本号库:$ git reset--hardHEAD^

         在Git中,用HEAD表示当前版本号。上一个版本号就是HEAD^,上上一个版本号就是HEAD^^。也能够写成HEAD~2。你能够用HEAD后面加n个^。或者HEAD~n来表示回退多少个版本号。

         上面是相对版本号的reset,当然也能够指定某一个详细版本号。这时候commitID版本号号就大派用场:  $ git reset --hard3628164

3628164仅仅是版本号的前一小部分,Git会帮我们去自己主动匹配。当然也有可能找到多条。所以还是写全比較靠谱。

 

         事实上对于Git来说。HEAD是一个当前版本号号的指针,用reset来切换版本号。实际上是调整HEAD的指向。

         所以。假设你reset 到HEAD~10。还行又回去原来的HEAD,那么也能够通过【reset+ 版本号号】的方式切换过去。

         当然你要知道相应的版本号号,这时候你能够通过 $ git relog 来查看你的命令历史和相相应的版本号号

 

e)     远程版本号回退

         Git是分布式版本号控制系统,仅仅要你把内容push出去了,那么远程库就会有记录,你也不能主动改动别人的版本号,这时候就仅仅能覆盖了。

可是你干过的坏事也就公诸于世了。

 

回退merge

         假设仅仅是在merge。则能够直接回退: $ git reset--hard HEAD^

         假设merge 以后还有别的操作和改动,则能够使用revert:

$ git revert -m merge线的编号  (从1開始计算,或者merge前的版本号号)

 

★ 版本号整合

         东西已经commit了。可是又想改动,怎么办呢?能够通过上面“版本号库回退”的方法来实现:resetcommit。可是那样commit的改动就没有了,须要又一次改动,工作量大。

         所以除此之外。我们还能够:

l  假设仅仅是合并已commit的版本号:$ git rebase -i HEAD~2

l  假设有补充的改动$ git commit --amend

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RN自定义组件封装 - 播放类似PPT动画

1. 前言 近日,被安排做一个开场动画的任务。虽然RN提供了Animated来自定义动画,但是本次动画中的元素颇多,交互甚烦。。。在完成任务的同时,发现很多步骤其实是重复的,于是封装了一个小组件记录一下,分享给…

target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件...

target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件转载于:https://www.cnblogs.com/classmethond/p/10520615.html

dropbox mac_如何在Windows或Mac上启动时阻止Dropbox打开

dropbox macDropbox is a handy way to synchronize files across devices via the cloud. By default, Dropbox starts whenever you turn on your Windows PC or Mac, but sometimes you might not want it to. Here’s how to make sure it doesn’t launch when you startu…

spring cloud 总结

Finchley版本Spring Cloud Finchley; Spring Boot 2.0.3 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)(Finchley版本) 所有的服务向这里注册 史上最简单的SpringCloud教程 | 第二篇: 服务消费者(restribbon&#xff09…

深入分析 ThreadLocal 内存泄漏问题

2019独角兽企业重金招聘Python工程师标准>>> ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用 ThreadLocal,就可能会…

如何将iPhone应用程序从应用程序库移动到主屏幕

Justin Duino贾斯汀杜伊诺(Justin Duino)So as to not clutter up your home screen, newly-downloaded apps from the App Store can be sent directly to the App Library. But what if you later want to open the app without digging through the library? Here’s how t…

luogu4389 付公主的背包

题目链接:洛谷 题目大意:现在有$n$个物品,每种物品体积为$v_i$,对任意$s\in [1,m]$,求背包恰好装$s$体积的方案数(完全背包问题)。 数据范围:$n,m\leq 10^5$ 这道题,看到…

Git与Github的连接与使用

2019独角兽企业重金招聘Python工程师标准>>> Git与Github的连接与使用 下面继续,使用git 将项目上传到GitHub上 首先要有GitHub账号,这就不用说了,没有的先注册,地址:https://github.com 没有仓库的话,先新…

ttl电路制作pong游戏_如何玩Mozilla Firefox的隐藏的独角兽Pong游戏

ttl电路制作pong游戏It seems like every browser has a hidden game these days. Chrome has a dinosaur game, Edge has surfing, and Firefox has . . . unicorn pong? Yep, you read that right—here’s how to play it. 这些天似乎每个浏览器都有一个隐藏的游戏。 Chrom…

nginx 注释配置及详解

前言 DMZ(Demilitarized Zone) 非军事区,生产环境 WEB 服务部署的区域,公司的架构为一台nginx 充当 load balance 服务,负载到两台 nginx 上面,反向代理至后台服务,但是nginx 用的全是默认配置加上 proxy_pass 和 upst…

为什么无法运行谷歌play_什么是Google Play积分,以及如何使用它们?

为什么无法运行谷歌playThe Google Play Store is home to thousands of apps, games, movies, e-books, and more. You might find yourself making a lot of purchases there, so why not get rewarded for it? That’s where Google Play Points come in. Google Play商店提…

2019年春季学期第三周作业

本周作业 本周请大家完成上周挑战作业的第一部分:给定一个整数数组(包含正负数),找到一个具有最大和的子数组,返回其最大的子数组的和。 例如:[1, -2, 3, 10, -4, 7, 2, -5]的最大子数组为[3, 10, -4, 7, 2] 1).实验代…

Linux实验二:linux 常用命令练习

ls命令 列出目录内容 echo命令 显示字符串 date命令 显示或设置系统的日期与时间 cal命令 显示日历 who命令 列出登录用户信息 chown命令 chgrp命令 改变文件所属的用户组 chmod命令 改变文件访问权限 find命令 在目录中搜索文件 转载于:https://www.cnblogs.com/nullno/p/87…

python数据类型之元组类型

#为何要有元组&#xff0c;存放多个值&#xff0c;元组不可变&#xff0c;更多的是用来做查询 t(1,[1&#xff0c;2,3],a,(1,2)) #ttuple((1,[1,2,3],a,(1,2))) # print(type(t)) <class tuple># #元组可以作为字典的key # d{(1,2):egon} # print(d,type(d),d[(1,2)])# …

短语密码_使用密码短语以提高安全性

短语密码Did you know that Windows supports using passwords of up to 127 characters? I don’t use passwords anymore, and I haven’t for years. I’ve switched to using password phrases instead. 您知道Windows支持使用最多127个字符的密码吗&#xff1f; 我不再使…

「单点登录与权限管理」系列概述

首先&#xff0c;感谢几位朋友在朋友圈转发我的文章&#xff0c;小声的告诉你们&#xff0c;是我主动让他们帮忙转发的&#xff1a;&#xff09;在朋友们的分享下&#xff0c;凌晨推送的一篇文章&#xff0c;阅读人数达到了280多&#xff0c;很满足&#xff0c;我会坚持写下去&…

Jupyter notebook: TypeError: __init__() got an unexpected keyword argument 'io_loop 问题

使用环境&#xff1a;Anaconda3&#xff08;Python3.6&#xff09; 创建一个新的notebook时&#xff0c;无法连接到kernel&#xff0c;terminal上显示错误为&#xff1a;TypeError: __init__() got an unexpected keyword argument io_loop 解决方法&#xff1a; conda install…

在Ubuntu Linux中获取上次访问的文件时间

Ubuntu Linux has a rich set of commands for manipulating and accessing files. The stat utility gives detailed access to file information, including last accessed and last modified file time. Ubuntu Linux具有一组丰富的用于操作和访问文件的命令。 stat实用程序…

MySQL新增从库

项目背景描述&#xff1a;在项目的开始只有一个MySQL实例在运行&#xff0c;后期因为安全性&#xff0c;压力&#xff0c;备份等原因需要在此实例的基础上面新增一个从库。分析&#xff1a;MySQL主从是基于binlog日志来实现的&#xff0c;那么需要主服务器开启binlog&#xff0…

第一个议题

① 在每个问题后面&#xff0c;请说明哪一章节的什么内容引起了你的提问&#xff0c;提供一些上下文 ② 列出一些事例或资料&#xff0c;支持你的提问 。 ③ 说说你提问题的原因&#xff0c;你说因为自己的假设和书中的不同而提问&#xff0c;还是不懂书中的术语&#xff0c;还…