当前位置: 首页 > news >正文

Git 文件操作

GIT仓库所在的目录称为工作目录,这个很好理解,我们的工程就在这里,工作时也是在这里做修改。

在工作目录中的文件被分为两种状态,一种是已跟踪状态(tracked),另一种是未跟踪状态(untracked)。只有处于已跟踪状态的文件才被纳入GIT的版本控制。如下图:

当我们往工作目录添加一个文件的时候,这个文件默认是未跟踪状态的,我们肯定不希望编译生成的一大堆临时文件默认被跟踪还要我们每次手动将这些文件清除出去。

用以下命令可以跟踪文件:

git add <file>

上图中右边3个状态都是已跟踪状态,其中的灰色箭头只表示untracked<-->tracked的转换而不是untracked<-->unmodified的转换,新添加的文件肯定算是被修改过的。

那么,staged状态又是什么呢?这就要搞清楚GIT的三个工作区域:本地数据(仓库)目录(Git directory),工作目录(Working directory),暂存区(staging area),

我们在编辑的时候处于working directory中;
编辑完了,通过git add命令将文件置于staging area;
运行git commit命令时提交到仓库中。

如下图所示:

    git directory就是我们的本地仓库.git目录,里面保存了所有的版本信息等内容。

  working driectory,工作目录,就是我们的工作目录,其中包括未跟踪文件及已跟踪文件,而已跟踪文件都是从git directory取出来的文件的某一个版本或新跟踪的文件。

  staging area,暂存区,不对应一个具体目录,其时只是git directory中的一个特殊文件。

  当我们修改了一些文件后,要将其放入暂存区然后才能提交,每次提交时其实都是提交暂存区的文件到git仓库,然后清除暂存区。而checkout某一版本时,这一版本的文件就从git仓库取出来放到了我们的工作目录。

 文件状态的查看

那么,我们怎么知道当前工作目录的状态呢?哪些文件已被暂存?有哪些未跟踪的文件?哪些文件被修改了?所有这些只需要一个命令,git status

在项目中添加一个文件

最下面的这个就是代表未跟踪的

 

清理本地working directory

有的时候,我们想放弃本地所有的修改,包括新增的文件,在Tortoisegit中需要两个操作来完成。
在仓库文件夹上右键-Tortoisegit-revert,这个操作会回滚掉本地所有的修改文件。
在仓库文件夹上右键-Tortoisegit-clean up,这个操作会删除掉没有进行版本追踪的文件。

开始状态

revert

在看状态

clean up

未跟踪文件消失

 

http://www.cnblogs.com/angeldevil/archive/2013/11/26/3238470.html

 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000

转载于:https://www.cnblogs.com/hongdada/p/4218904.html

相关文章:

  • 阶乘后的零[LeetCode-172]
  • 理解WebKit和Chromium: Android 4.4 上的Chromium WebView
  • springboot 统一异常处理(包含统一数据校验)
  • JavaSE-note1-随机访问类RandomAccessFile
  • git进阶之.gitignore 和 .gitmodules
  • jquery 延迟加载代码
  • WingMoney APP逆向,实现自动话费充值
  • ListView滚动到底部判断
  • 架构进阶笔记—如何阅读一个开源项目的源码?
  • 模块化JavaScript设计模式(一)
  • 码出高效JAVA开发手册(这个应该人手一份)
  • Web前端实践经验总结
  • GitHub(hexo)博客页面访问量错误以及中文乱码解决
  • POJ 3270 置换群问题
  • Amazon Aurora是如何设计原生云关系型数据库的?
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 《Java编程思想》读书笔记-对象导论
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • chrome扩展demo1-小时钟
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JAVA 学习IO流
  • JS基础之数据类型、对象、原型、原型链、继承
  • laravel with 查询列表限制条数
  • leetcode46 Permutation 排列组合
  • LintCode 31. partitionArray 数组划分
  • Netty源码解析1-Buffer
  • PHP 的 SAPI 是个什么东西
  • Spark学习笔记之相关记录
  • vue.js框架原理浅析
  • 安卓应用性能调试和优化经验分享
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 聊聊flink的TableFactory
  • 删除表内多余的重复数据
  • 使用 @font-face
  • 终端用户监控:真实用户监控还是模拟监控?
  • 字符串匹配基础上
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 阿里云API、SDK和CLI应用实践方案
  • #162 (Div. 2)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • .NET delegate 委托 、 Event 事件
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .net项目IIS、VS 附加进程调试
  • .net中应用SQL缓存(实例使用)
  • .py文件应该怎样打开?