git工作区

git的工作区就是电脑中能看到的目录,比如我的learning文件夹就是一个工作区

版本库暂存区

工作去有一个隐藏的目录.git,这个不算工作区,而是git的版本库
git的版本库中存了很多东西,其中最重要的就是stage(或是index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫head

我们把文件向git版本库里添加的时候,分为两步:
用git add 把文件添加进行实际上就是把文件修改添加到暂存区
用git commit提交更改,实际上就是把暂存区的内容提交到当前分支,我们创建git版本库时候,git自动为我们创建唯一一个master分支,所以现在,git commit就会想master分支提交更改。
如我们修改了readme.txt和新添加了license,使用git status 命令就会提示我们修改了readme文件,license新添加的文件会提示Untracked的状态,使用git add 添加到暂存区

使用 git commit提交到master版本库

最后,通过git push推送到远程仓库

git管理修改

git跟踪并管理的是修改,而非文件。
例如:第一次修改->git add -> 第二次修改 ->git commit
在用git add命令后,在工作去第一次修改被放入暂存区,但是在工作区的第二次修改并没有放入暂存区,所以git commit只负责把暂存区的修改修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。(原因:git管理的是修改)
如果需要提交第二次修改,应该如何做呢?
> 可以继续git add再git commit
> 别着急提交第一次修改,先git add第二次修改,在git commit,就相当于把两次修改合并后在一块提交了。
> 第一次修改->-git add>第二次修改->git add->git commit

git撤销修改

工作文件修改错误,需要撤销,命令git checkout -- 就派上用场
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,有两种情况
readme.txt修改后没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态
readme.txt已经添加到暂存区,又作了修改,现在撤销修改就回到添加到暂存区后的状态
总之,就是让这个文件回到最近一次git commit或git add时的状态
如果文件已经修改并git add添加到暂存区,在git commit之前,需要撤销修改,使用命令 git reset head file.
命令 git reset head file 可以把暂存区的修改撤销掉,重新放回工作区。 (场景1)如果改乱了工作区的某个文件的内容,想直接丢弃工作去的修改的时候,使用命令 git checkout --file
(场景2)不然改乱了工作去并且添加到暂存区的时候,想直接丢弃,分为两步 第一 使用命令 git reset Head file ,回到"场景1",第二部按场景1操作。
(场景3)如果已经提交了不合适的修改到版本库,想撤销本次提交,使用"版本回退" 前提是没有推送到远程库。
ps注意:
使用的git checkout --file 命令,命令中的"--"很重要,没有"--"就变成了切换到另外一个分支的命令。

git删除文件

文件从工作区删除,工作区和版本库就不一致了,通过git status就可发现那些文件被删除。
如果确实需要从版本库中删除该文件,就用命令 git rm删掉,并且 git commit;
如果删除错了,因为版本库中还有该文件,使用 git checkout -- xx.file 还原该文件。 命令:git checkout是用版本库中的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

git 工作区管理的更多相关文章

  1. git工作区、暂存区、版本库之间的关系

    区分三者关系 Git最让你迷惑的无非是它里面的各种概念了,如果是刚开始接触Git希望看完本篇介绍之后有一个清晰的认识,笔者认识也有限这里只说说个人对使用Git的感受,说一下它里面的几个最常用的概念的理 ...

  2. 好代码是管出来的——使用Git来管理源代码

    软件开发过程中一个重要的产出就是代码,软件的编码过程一般是由一个团队共同完成,它是一个并行活动,为了保证代码在多人开发中能够顺利完成,我们需要使用代码版本控制工具来对代码进行统一存储,并追踪每一份代码 ...

  3. 02: git分支管理

    目录:GIT其他篇 01: git & github 02: git分支管理 目录: 1.1 Git常用命令 1.2 主要分支(保护分支) 1.3 特性分支:feature (开发分支合并到d ...

  4. Git 版本控制管理(二)

    Git 分支管理 1. 概念 我们来抽象的理解,分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN.如果两个平行宇宙互不干扰,那对现在的你也 ...

  5. git分支管理与冲突解决(转载)

    Git 分支管理和冲突解决 原文:http://www.cnblogs.com/mengdd/p/3585038.html 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称 ...

  6. IOS Git源代码管理工具

    .新建一个“本地仓库” $ git init .配置仓库 >告诉git你是谁 git config user.name lnj >告诉git怎么联系你 git config user.em ...

  7. git指令-管理修改

    git指令-管理修改 git管理的不是文件,而是修改 eg:对readme.txt文件进行修改一行 在最后追加一句git has to tracked 然后添加,并且查看状态 cat +文件名称 表示 ...

  8. Git代码管理工具

    Git代码管理工具 Git 是分布式的源代码管理工具,这点区别于svn -让源代码可以被追溯,主要是记录了每次的更新了什么,如果新版本不想用,那么则可以退回之前的版本 -Git 是Linux之父当年为 ...

  9. git版本控制管理实践-4

    vcs: version control system 版本控制系统 local vcs, 集中式版本控制系统: centralized vcs; 分布式vcs: distributed vcs Lo ...

随机推荐

  1. 解决 httpclient 下 Address already in use: connect 的错误

    最近做httpclient做转发服务,发现服务器上总是有很多close_wait状态的连接,而且这些连接都不会关闭,最后导致服务器没法建立新的网络连接,从而停止响应. 后来在网上搜索了一下,发现解决的 ...

  2. python文件读书笔记

    一.打开文件 1 f=open('text.txt',r)  二.读取文件 print(f.read) 三.关闭文件 f.close() 比较好用的是运用with with open('text.tx ...

  3. 20175307《Java程序设计》第5周学习总结

    教材内容总结 6.1  接口 1接口声明 接口使用关键字interface来进行声明 eg:interface  接口的名字 2接口体 接口体中包含常量的声明和抽象方法两部分(没有变量) 注意一定的要 ...

  4. 2018年-2019年第二学期第五周C#学习个人总结

    在本周我学习了第五章面向对象高级中的5.3多态,5.3多态中主要包括重写父类方法,多态的实现,base关键字,里氏转换原则,Object类.在重写父类方法中要求当重写父类的方法时,要求子类的方法名,参 ...

  5. 复旦高等代数II(18级)每周一题

    本学期将继续进行高等代数每周一题的活动.计划从第一教学周开始,到第十五教学周结束,每周的周末公布一道思考题(预计15道),供大家思考和解答.每周一题将通过“高等代数官方博客”(以博文的形式)和“高等代 ...

  6. VS2110。VC++编译错误"error LNK2005: 已经在 XXX.obj 中定义的问题"

    有时候我们会在头文件当中定义一些全局变量或者全局函数,这种做法会比较方便,但有时候会出现“编译错误"error LNK2005: 已经在 XXX.obj 中定义的问题"的链接问题. ...

  7. win10 1803版本unable to start ssh-agent service, error :1058

    PowerShell安装了pshazz或者posh-git,但是打开的时候提示 unable to start ssh-agent service, error :1058 1803的设置上面可以看到 ...

  8. js回调函数以及同步与异步

    1. 背景介绍javascript的单线程特性由于javascript语言是一门“单线程”的语言,所以,javascript就像一条流水线,仅仅是一条流水线而已,要么加工,要么包装,不能同时进行多个任 ...

  9. springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用

    springboot2.0 JPA配置自定义repository,并作为基类BaseRepository使用 原文链接:https://www.cnblogs.com/blog5277/p/10661 ...

  10. react项目中实现悬浮(hover)在按钮上时在旁边显示提示

    <i className={classNames({ 'device-icon': true, 'camera-icon': true, 'camera-icon-hover-show-intr ...