【Git】(1)---工做区、暂存区、版本库、远程仓库

工做区、暂存区、版本库、远程仓库

 

1、概念

   一、四个工做区域

Git本地有四个工做区域:工做目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。文件在这四个区域之间的转换关系以下:html

    Workspace: 工做区,就是你平时存放项目代码的地方git

Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息算法

    Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到全部版本的数据。其中HEAD指向最新放入仓库的版本安全

        Remote: 远程仓库,托管代码的服务器,能够简单的认为是你项目组中的一台电脑用于远程数据交换服务器

   二、工做流程

git的工做流程通常是这样的:post

1、在工做目录中添加、修改文件;url

2、将须要进行版本管理的文件放入暂存区域;spa

3、将暂存区域的文件提交到git仓库。版本控制

所以,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)code

   三、文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操做,首先要知道文件当前在什么状态,否则可能会提交了如今还不想提交的文件,或者要提交的文件没提交上。

GIT不关心文件两个版本之间的具体差异,而是关心文件的总体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件总体是否改变的方法就是用

SHA-1算法计算文件的校验和。

Untracked:   未跟踪, 此文件在文件夹中, 但并无加入到git库, 不参与版本控制. 经过git add 状态变为Staged.

 Unmodify:   文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中彻底一致. 这种类型的文件有两种去处, 若是它被修改, 而变为Modified.

                   若是使用git rm移出版本库, 则成为Untracked文件

  Modified: 文件已修改, 仅仅是修改, 并无进行其余的操做. 这个文件也有两个去处, 经过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,

                返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

    Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,

               文件状态为Modified

 下面的图很好的解释了这四种状态的转变:

新建文件--->Untracked

使用add命令将新建的文件加入到暂存区--->Staged

使用commit命令将暂存区的文件提交到本地仓库--->Unmodified

若是对Unmodified状态的文件进行修改---> modified

若是对Unmodified状态的文件进行remove操做--->Untracked

 

2、四个区域经常使用命令

   一、新建代码库

# 在当前目录新建一个Git代码库
 git init
# 新建一个目录,将其初始化为Git代码库
git init [project-name]
# 下载一个项目和它的整个代码历史
git clone [url]

   二、查看文件状态

#查看指定文件状态
git status [filename]
#查看全部文件状态
git status

    三、工做区<-->暂存区

# 添加指定文件到暂存区
git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
git add [dir]
# 添加当前目录的全部文件到暂存区
git add .
#当咱们须要删除暂存区或分支上的文件, 同时工做区也不须要这个文件了, 可使用(⚠️)
git rm file_path
#当咱们须要删除暂存区或分支上的文件, 但本地又须要使用, 这个时候直接push那边这个文件就没有,若是push以前从新add那么仍是会有。
git rm --cached file_path
#直接加文件名   从暂存区将文件恢复到工做区,若是工做区已经有该文件,则会选择覆盖
#加了【分支名】 +文件名  则表示从分支名为所写的分支名中拉取文件 并覆盖工做区里的文件
git checkout

    四、工做区<-->资源库(版本库)

#将暂存区-->资源库(版本库)
git commit -m '该次提交说明'
#若是出现:将没必要要的文件commit 或者 上次提交以为是错的  或者 不想改变暂存区内容,只是想调整提交的信息
#移除没必要要的添加到暂存区的文件
git reset HEAD 文件名
#去掉上一次的提交(会直接变成add以前状态)   
git reset HEAD^ 
#去掉上一次的提交(变成add以后,commit以前状态) 
git reset --soft  HEAD^ 

    五、远程操做

# 取回远程仓库的变化,并与本地分支合并
git pull
# 上传本地指定分支到远程仓库
git push

   六、其它经常使用命令

# 显示当前的Git配置
git config --list
# 编辑Git配置文件
git config -e [--global]
#初次commit以前,须要配置用户邮箱及用户名,使用如下命令:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
#调出Git的帮助文档
git --help
#查看某个具体命令的帮助文档
git +命令 --help
#查看git的版本
git --version

 

参考

一个小时学会Git

 

我只是偶尔安静下来,对过去的种种思忖一番。那些曾经的旧时光里即使有过天真愚钝,也不值得谴责。毕竟,日后的日子,还很长。不断鼓励本身,

天一亮,又是崭新的起点,又是未知的征程(上校18)

相关文章
相关标签/搜索