Foundations of Git

首先Git是一款免费、开源的分布式版本控制系统,只要通过大概10个指令的学习,就可以满足我们日常的Git的使用需求。当然,它也有自己的图形界面。
这里写图片描述


Git安装

在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。
Git 各平台安装包下载地址为:http://git-scm.com/downloads

完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具。
在开始菜单里找到”Git”->”Git Bash”,会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。


Git设置

1、配置用户信息(Config User Info)

$ git config --global user.name
ZFJxx
$git config --global user.email
421444710@qq.com

这里写图片描述

在git.com发布时会看到你的这些信息。

2、Config有用的设置
local:具有最高的优先级,大于global
global:稍弱,将被local覆盖
System:最弱,通常是最模糊的或者不常用的设置,将被global或者local覆盖


Git init—初始化仓库

git init

Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。
在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。

1、如果你已经有一个项目,但是你突然发现需要对这个项目进行版本控制。那么你只需要来到这个项目的目录下,输入 git init,就可以创建一个 Git 仓库了。比如我们创建 runoob 项目:

$ mkdir runoob // 新建runoob文件夹
$ cd runoob/   //进入到runoob文件夹中
$ git init     //在 /www/runoob/.git/ 目录初始化空 Git 仓库完毕。
Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/

那么这个目录就变成有git仓库的了。(注意,这里的.git 是隐藏文件)

2、如果你想在创建一个新项目之前,就对这个项目进行版本控制,那么在你开始一个新项目之前,你只要输入

git init newrepo

初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。


Git clone —拷贝Git 仓库到本地

使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。
如果你需要与他人合作一个项目,或者想要复制一个项目,看看代码,你就可以克隆那个项目。 执行命令:

 git clone [url]

[url] 为你想要复制的项目,就可以了。
这里写图片描述


Git 基本操作

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改
这里写图片描述

这里写图片描述
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

$ git add hello.php
$ git add test.php
$ git commit -m '初始化项目版本'

使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。
以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。 -m 参数后的 “初始化版本” 称作提交信息,是对这个提交的概述。

git add

这里写图片描述
git add 命令可将该文件添加到缓存,如我们添加以下两个文件:

$ touch test.php
$ touch hello.php  //touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
$ ls  //ls命令用于显示指定工作目录下之内容
test.php        hello.php
$ git status -s
?? test.php
?? hello.php

git status 命令用于查看项目的当前状态。
接下来我们执行 git add 命令来添加文件:

$ git add hello.php 
$ git add test.php

现在我们再执行 git status,就可以看到这两个文件已经加上去了。

$ git status -s
A  test.php
A  hello.php

新项目中,添加所有文件很普遍,我们可以使用 git add . 命令来添加当前项目的所有文件。

git commit

使用 git add 命令将想要快照的内容写入缓存区, 而执行 git commit 将缓存区内容添加到仓库中。
现在版本库变成了这样,暂存区就没有任何内容了:
这里写图片描述
Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。

$ git config --global user.name 'ZFJxxx'
$ git config --global user.email 42144471@qq.com

接下来我们写入缓存,并提交对 hello.php 的所有改动。在首个例子中,我们使用 -m 选项以在命令行中提供提交注释。

$ git add hello.php
$ git status -s
A  test.php
A  hello.php
$ git commit -m '第一次版本提交'
[master (root-commit) d32cf1f] 第一次版本提交
 2 files changed, 4 insertions(+)
 create mode 100644 test.php
 create mode 100644 hello.php

现在我们已经记录了快照。如果我们再执行 git status:

$ git status
# On branch master
nothing to commit (working directory clean)

以上输出说明我们在最近一次提交之后,没有做任何改动,是一个”working directory clean:干净的工作目录”。

git status

git status 以查看在你上次提交之后是否有修改。
我演示该命令的时候加了 -s 参数,以获得简短的结果输出。如果没加该参数会详细输出内容:

$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   test.php
    new file:   hello.php

git reset HEAD

git reset HEAD 命令用于取消已缓存的内容。
我们先改动文件 test.php 文件,内容如下:

# Runoob Git 测试
# Git教程

hello.php 文件修改为:

<?php
echo '11111';
echo '11111';
echo '111111';
?>

现在两个文件修改后,都提交到了缓存区,我们现在要取消其中一个的缓存,操作如下:

$ git status -s
 M test.php
 M hello.php
$ git add .
$ git status -s
M  test.php
M  hello.pp
$ git reset HEAD -- hello.php 
Unstaged changes after reset:
M   hello.php
$ git status -s
M  test.php
 M hello.php

现在你执行 git commit,只会将test.php 文件的改动提交,而 hello.php 是没有的。

$ git commit -m '修改'
[master f50cfda] 修改
 1 file changed, 1 insertion(+)
$ git status -s
 M hello.php

可以看到 test.php 文件的修改并为提交。
这时我们可以使用以下命令将 hello.php 的修改提交:

$ git commit -am '修改 hello.php 文件'
[master 760f74d] 修改 hello.php 文件
 1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working directory clean

简而言之,执行 git reset HEAD 以取消之前 git add 添加,但不希望包含在下一提交快照中的缓存。

git rm

git rm 会将条目从缓存区中移除。这与 git reset HEAD 将条目取消缓存是有区别的。 “取消缓存”的意思就是将缓存区恢复为我们做出修改之前的样子。
默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。
如果你要在工作目录中留着该文件,可以使用 git rm –cached:
如我们删除 hello.php文件:

$ git rm hello.php 
rm 'hello.php'
$ ls
test.php

不从工作区中删除文件:

$ git rm --cached test.php 
rm 'test.php'
$ ls
test.php

git mv

git mv 命令用于移动或重命名一个文件、目录、软连接。
我们先把刚移除的test.php 添加回来:

$ git add test.php 

然后对其重名:

$ git mv test.php test1.php
$ ls
test1.php
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值