码迷,mamicode.com
首页 > 其他好文 > 详细

Git基础知识(一)

时间:2016-04-21 07:31:48      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

前言

Git是一个开源的分布式版本控制系统。本文很多内容翻译自:

https://www.codecademy.com/learn/learn-git

使用Git的第一步是下载Git,下载地址,安装时所有选项都默认选择即可。


基本工作流程

1. init

首先新建一个文件夹,进入文件夹后右击鼠标,选择git bash,敲打命令

git init

git会生成一个隐藏的.git文件夹,里面的内容用于版本控制。这样便完成了git的初始化工作,后续即可进行版本控制。
技术分享

2. 三个工作区的认识

初始化完了一个git工程后,稍微来认识一下git工程。一个git工程有三个重要组成部分:

  • 工作区 (Working Directory):就是我们当前能看到和编辑的文件夹。
  • 缓存区 (Staging Area/Index Area):可以将工作区的变化添加到此区域。
  • 仓库 (Repository):将从工作区添加到缓存区的变化永久存储起来,作为不同的版本。

Git的工作流程包括:在工作区编辑文件产生变化,添加文件变化到缓存区,保存文件的变化到仓库。
技术分享

3. status add commit

status命令:查看工作区以及缓存区的状态
add命令:添加工作区的文件到缓存区
commit命令:将缓存区的文件变化存储至仓库

a. 我们先新建一个空文件git.txt,敲入命令

git status

技术分享

提示的信息是:没有内容被添加到缓存区,但是工作区有新建还未进行版本控制的文件。

b. 将这个文件添加至缓存区,并再次查看状态

git add git.txt
git status

技术分享

提示的信息是:缓存区有待提交的新文件

c. 将这个文件提交,-m代表提交的信息,是必须项。

git commit -m "init"
git status

技术分享

此时git的状态显示: (缓存区)没有东西可以提交到仓库,工作区也没有什么变化。

diff

diff命令:比较工作区和缓存区的不同。

a. 我们首先添加三行文字到git.txt
技术分享
b. 敲入命令

git diff git.txt

技术分享

结果表明:工作区添加了三行文字。

c. 将其添加至缓存区并提交

git add git.txt
git commit -m "add three lines"

d. 再次在工作区编辑git.txt
技术分享

e. 敲入git diff git.txt

git diff git.txt

技术分享

我们之前说过diff是工作区和缓存区的比较,c步骤commit之后缓存区已经为空了,当缓存区为空时,比较的是仓库最新的commit。

f. 将其添加至缓存区并提交

git add git.txt
git commit -m "delete two lines add one line"

log

log命令就是展示之前的所有commit史

git log

技术分享

小结

  1. git三个区域的认识:工作区、缓存区、仓库。
  2. 几个基本命令
    技术分享

版本回退

1. 认识HEAD

你当前所在的commit称为HEAD commit,大部分情况下,最近一次提交的commit就是HEAD commit,简称HEAD。
显示HEAD

git show HEAD

技术分享
可以看到,HEAD就是我们最后一次的commit。

2. checkout

当你编辑工作区的文件,但是改着改着就乱了,想回退到之前的状态时,就可以使用checkout命令。
a. 编辑git.txt
技术分享

b. 回退到之前的状态

git checkout HEAD git.txt

技术分享

工作区的内容就会丢弃之前的编辑并且清理缓存区的内容,完全回到上一次commit的状态。

3. reset

reset命令用于将文件从缓存区撤回,以防止被commit。

a. 我们编辑git.txt,并将其add进缓存区
技术分享

b. 新建一个空文件git1.txt,将其add进缓存区

c. 当我们想要commit时觉得git.txt的变化没必要在这次commit进行,于是便使用reset撤回。

git reset HEAD git.txt

技术分享

这样,这一次commit便不会包含git.txt的变化了。reset只是从缓存区撤回并不会影响工作区。

技术分享

d. 对git.txt重新进行add和commit操作。

git add git.txt
git commit -m "add two lines to git.txt"

4. reset SHA

reset除了3中从缓存区撤回的功能外,还可以改变HEAD的位置。

a. 首先看一下现在的log

git log

技术分享

b. 将HEAD回退到之前某一个版本,这里选择”delete two lines add one line”那个版本

git reset 39f016

这样,HEAD就回到这里,但是注意,工作区的内容是不会改变的,只是单纯将HEAD拉回到原先的版本。

git status

技术分享

状态图:
技术分享

c. 重新add和commit

git add git.txt git1.txt
git commit -m "modified git.txt add git1.txt"

再看一下log

git log

技术分享

历史轨迹已经改变~~

5. checkout SHA

相比reset SHA,checkout SHA更加彻底,他会直接将版本回退到那个版本,并且工作区的内容也直接回退到该版本。
技术分享

这里的结果就是,git.txt回退到该版本状态,git1.txt也被删除了,因为该版本并无git1.txt。

小结

  1. 认识HEAD
  2. 几个基本命令
    技术分享

Git基础知识(一)

标签:

原文地址:http://blog.csdn.net/leelit/article/details/51199859

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!