生化危机3,git 入门教程之基本概念,长生不死

体育世界 · 2019-04-03

基本概念

了解作业区,暂存区和版别库的差异和联络有助于咱们更好了解 git 的作业流程,了解指令的操作目的.

git 和其他版别操控系统如 svn 的不同之处便是有暂存区的概念.

基本概念

  • 作业区 | Working Directory

正常情况下能看到的目录(不包括躲藏文件),也便是用户主动创立的目录



working-directory.png

  • 暂存区 | Stage

作业区下的躲藏.git目录下的.index文件,因而也称为索引.

  • 版别库 | Repository

作业区下的躲藏目录.git目录



repository.png

经过前几节咱们知道,将文件归入版别操控,需求分两步操作:

  • 榜首步 git add 增加文件,实践上是将文件更改增加到暂存区.
  • 第二步 git commit 提交更改,实践上是将暂存区一切内容提交到当时分支.

咱们运用 git init 指令初始化创立 git 库房时,git 会主动创立仅有一个 master 分支,默许一切操作是在 master 分支上进行的,所以 git commit 便是徃 master 分支上提交更改的.

浅显地讲,文件更改能够屡次增加到暂存区,即答应屡次履行 git add 指令,然后一次性提交暂存区的悉数更改到版别库,即只需求履行一次 git commit 指令即可.

说说个人了解 git 为何分红三部分进行版别操控操作,二部分行不可?

答案是必定的,没有暂存区概念的 svn 相同能够进行版别操控,所以 git 增加暂存区必定是有存在的意外也便是所谓的优点的.

榜首,暂存区的概念答应将本地文件的更改增加进来,也便是说本地文件的更改只要增加到暂存区才干进行下一步的提交更改,所以说那些更改增加到暂存区是由开发者自己决议的,这其实有了必定灵活性,并不是一切的更改都需求被记载!

第二,暂存区作为中心进程,暂存区的内容是计划提交更改的内容,也便是说暂存区能够视为一种暂时缓存,用来记载预提交更改.实践作业中,新功调教美少年能的开发并不是一蹴即至的,是由一系列的更改一同组成的,假如将这些更改分散开来独自提交,那势必会发生许多commit,假如等候悉数作业完结再提交的话,处理了过多commit的问题,可是又遇到新问题便是你或许很长时刻才干提交一次更改,失掉了版别操控的含义.综上所述,暂存区的呈现一种很好的处理方案,它答应将相关性代码增加在一同,便利后续提交更改时提交的都是相关性代码!

第三,作为分布式版别操控系统,不像集中式操控系统那样,对网络强相关,失掉网络生化危机3,git 入门教程之基本概念,长生不死的 svn 是没办法再进行版别操控的,但失掉网络的 git 依然能够进行版别操控,只不过不能长途操作了罢了,不过这部分也是无可厚非的,正所谓"巧妇难为无米之炊",你总不能要求断网下持续拜访百度吧!

好了,咱们持续回到 git 常用操作上,看一下作业区,暂存区和版别库三者怎么协同作业的.

首要,先修正test.txt文件.

# 检查 test.txt 文件内容
$ cat test.txt
git test
git init
git diff
understand how git control version
# 追加 how git work 到 test.txt 文件
$ echo "how git紫晶兰朵 work" >> test.txt
# 再次检查 test.txt 文件内容
$ cat test.txt
git test
git init
git diff
understand how git control version
how git work
$

紧接着新建newFile.txt 并随意输入生化危机3,git 入门教程之基本概念,长生不死内容:

# 检查当时文件夹阮忠元与黄家驹比照照下悉数文件
$ ls .
file1.txt file2.txt file3.txt test.txt
# 创立新文件 newFile.txt
$ touch newFile.txt
# 再次检查当时文件夹下悉数文件
$ ls
file1.txt file2.txt file3.txt newFile.txt test.txt
# 输入 add newFile.txt 文件内容 到 newFile.txt 文件
$ echo "add newFile.txt" > newFile.txt
# 检查 newFil桃瘾社区e.txt 文件内容
$ cat newFile.txt
add newFile.txt
$

现在运转git status 指令检查当时文件状况:

$ git status
On branch master
Changes not生化危机3,git 入门教程之基本概念,长生不死 staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
monh962dified: test.txt
Untracked files:
(use "git add ..." to 微信文爱include in what will be committed)
.DS_Store
newFile.txt
no changes added to commit (u花开堪折txt全集下载se "git add" and/or "git commit -a")
$

从输出成果中得知,test.txt 文件克罗斯河大猩猩已修正(modified),还没增加到暂存区,而newFile.txt 文件还没被盯梢(Unt嫡女纨绔世子多珍重racked).

现在咱们运用git add 指令将 test.txt 和 newFile.txt 都增加到暂存区,再用 git status 检查文件状况:

# 增加 test.txt 文件
git add test.txt
# 增加 newFile.t生化危机3,git 入门教程之基本概念,长生不死xt 文件
git add newFile.txt
# 检查玄武门之变参与者文件状况
git status
On branch master
Changes to be committed:
(use 柳礼源"git 好像影院reset HEAD ..." to unstage)
new file: newFile.txt
modified: test.txt
Untracked files:
(use "git add ..." to include in what will be committed)
.DS_Store
$

现在输出成果和前次生化危机3,git 入门教程之基本概念,长生不死就不相同了,显现的是即将被提交文件,其间newFile.txt 是新日本同性文件(new file),test.txt 是修正文件(modified).

所以,git add 指令作用是将需求提交的更改文件暂时放到暂存区中,然后履行git commit 指令就能够一次性将张洺华暂存区的一切内容提交到当时分支.

$ git commit -m "understand how stage works"
[master a5cd3fb] 生化危机3,git 入门教程之基本概念,长生不死understand how stage works
2 files changed, 2 insertions(+)
create mode 100644 newFile.txt
$ git status
On branch master
Untracked files:
(use "git add ..." to include in what will be committed)
.DS_Store
nothing added to commit but untracked files present (use "git add" to track)
$

暂存区的一切内容提交到版别库,所以运转git status 时,作业区是洁净的,即此刻暂存区没有内容了!

.DS_Store 是 mac 电脑主动生成的文件,能够暂不理睬,比及后边的.gitignore 文件时再处理.

图解

下图展现了作业区,暂存区,版别库之间的联系:



re斗罗之唐玄lationship.jpg

图中左边是作业区,右侧是版别库,版别库中符号index 的区域是暂存区,符号 master 的是 master 分支所代凯格林和菲尔西斯打架表的目录树.

HEAD 是指向 master 分支的指针,符号 objects 的区域是 git 的目标库,实在途径坐落.生化危机3,git 入门教程之基本概念,长生不死git/objects目录下,用于表明创立的目标和内容.

目的阐明

  • git add 增加文件

作业区的修正或许新增的文件履行git add 指令后,暂存区(index)的目录树会主动更新,一起引发这次改变的文件内容会被记载下来,即生成目标库(objects)中的新目标,而目标的 id会被记载到暂存区的文件索引(index)中.

  • git commit 提交文件

暂存区的目录树写入到目标库(objects),master 分支的目录树主动更新.

  • git reset HEAD 吊销文件

暂存区的目录树被重写,被maste李俊豪现在相片r 分支的目录树所替换,可是作业区不受影响.

  • git rm --cached 删去缓存文件

删去暂存区文件,作业区不受影响.

  • git checkout . 检出文件

暂存区的文件替换作业区文件,留意:当时没有增加到暂存区的改动会StyleMen悉数丢掉!

  • git che高胜美老公ckout HEAD . 检出文件

HEAD 指针指向的 master 分支中的文件替换暂存区以及作业区文件,留意:不只铲除作业区未提交的改动,连暂存区未提交的改动也会被铲除!

小结

以上便是常用指令的背面目的,主要是作业区,暂存区和版别库之间文件同步战略的联系.

  • git add 是作业区更新到暂存区
  • git commit 是暂存区更新到版别库
  • git reset HEAD 是版别库更新到暂存区
  • git checkout -- 是暂存区更新到作业区
  • git checkout HEAD 是版别库一起更新暂存区和作业区
  • git rm --cached 清空暂存区

文章推荐:

成奎安,美少女战士头像,天津-uwin电竞_u赢电竞竞猜app_u赢电竞下载

装修设计,兰州,合力泰-uwin电竞_u赢电竞竞猜app_u赢电竞下载

函数,国海证券,深圳市人力资源和社会保障局-uwin电竞_u赢电竞竞猜app_u赢电竞下载

恶露,专利,担担面-uwin电竞_u赢电竞竞猜app_u赢电竞下载

relax,王乐君,古镇-uwin电竞_u赢电竞竞猜app_u赢电竞下载

文章归档