1. Git安装&&配置
1.1 下载
下载地址: git-scm.com/download
1.2 安装
下载完成后可以得到如下安装文件:
双击下载的安装文件来安装Git。安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。
备注:
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
1.3 基础配置
git 的设置使用 git config 命令。
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用 该用户信息
- 打开Git Bash
- 设置用户信息
git config --global user.name “itcast”
git config --global user.email “hello@itcast.cn”
1.4 其他配置
- 显示当前的 git 配置信息:
#全部配置
git config --list
#用户名
git config --global user.name
#邮箱
git config --global user.email
- 设置提交代码时的用户信息编辑 git 配置文件:
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com
如果去掉 --global 参数只对当前仓库有效。
- 编辑 git 配置文件:
$ git config -e # 针对当前仓库
或者:
$ git config -e --global # 针对系统上所有仓库
1.5 GitBash乱码问题
- 打开GitBash执行下面命令
git config --global core.quotepath false
- {git_home}指的是git的安装目录
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
2. 工作流程
- clone(克隆): 从远程仓库中克隆代码到本地仓库
- checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
- add(添加): 在提交前先将代码提交到暂存区
- commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
- fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
- pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于 fetch+merge
- push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
3. 操作命令
Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git 的命令而发生变化。
3.1 初始化仓库
3.1.1获取本地仓库
要使用Git对我们的代码进行版本控制,首先需要获得本地仓库:
1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库
2)进入这个目录中,点击右键打开Git bash窗口
3)执行命令
git init
4)如果创建成功后可在文件夹下看到隐藏的.git目录。
使用我们指定目录作为Git仓库
git init newrepo
初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
3.1.2 克隆仓库
我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。
克隆仓库的命令格式为:
git clone <repo>
如果我们需要克隆到指定的目录,可以使用以下命令格式:
git clone <repo> <directory>
参数说明:
- repo: Git 仓库。
- directory: 本地目录。
比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
$ git clone git://github.com/schacon/grit.git
执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。
如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit
3.2 添加(工作区 --> 暂存区)
#添加一个或多个文件到暂存区:
git add [file1] [file2] ...
#添加指定目录到暂存区,包括子目录:
git add [dir]
#添加当前目录下的所有文件到暂存区:
git add .
git add 单个文件名|通配符
3.3 查看状态
git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
通常我们使用 -s 参数来获得简短的输出结果:
以下实例我们添加两个文件: git status 命令用于查看项目的当前状态
$ touch README # 创建文件
$ touch hello.py # 创建文件
$ ls # 查看文件
README hello.php
$ git status -s 。
?? README
?? hello.php
$
接下来我们执行 git add 命令来添加文件:
git add .
现在我们再执行 git status,就可以看到这两个文件已经加上去了。
$ git status -s
A README
A hello.php
$
现在我们修改 README 文件: 在 README 添加以下内容: # Runoob Git 测试,然后保存退出。
再执行一下 git status:
$ git status -s
AM README
A hello.php
AM 状态的意思是这个文件在我们将它添加到缓存之后又有改动。改动后我们再执行 git add . 命令将其添加到缓存中:
$ git add .
$ git status -s
A README
A hello.php
文件修改后,我们一般都需要进行 git add 操作,从而保存历史版本。
3.3 对比
git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff
- 查看已缓存的改动: git diff --cached
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff --stat
显示暂存区和工作区的差异:
$ git diff [file]
显示暂存区和上一次提交(commit)的差异:
$ git diff --cached [file]
或
$ git diff --staged [file]
显示两次提交之间的差异:
$ git diff [first-branch]...[second-branch]
git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。
在 readme.md 文件中输入以下内容:+123123
接下来我们来查看下 git diff --cached 的执行效果:
3.4 添加(暂存区 --> 仓库)
前面章节我们使用 git add 命令将内容写入暂存区。
git commit 命令将暂存区内容添加到本地仓库中。
提交暂存区到本地仓库中:
git commit -m '注释内容'
$ git commit [file1] [file2] ... -m [message]
-a 参数设置修改文件后不需要执行 git add 命令,直接来提交
$ git commit -a
提交修改
接下来我们就可以对 hello.php 的所有改动从暂存区内容添加到本地仓库中。
以下实例,我们使用 -m 选项以在命令行中提供提交注释。
$ git add hello.php
$ git status -s
A README
A hello.php
$ git commit -m '第一次版本提交'
[master (root-commit) d32cf1f] 第一次版本提交
2 files changed, 4 insertions(+)
create mode 100644 README
create mode 100644 hello.php
现在我们已经记录了快照。如果我们再执行 git status:
$ git status
# On branch master
nothing to commit (working directory clean)
以上输出说明我们在最近一次提交之后,没有做任何改动,是一个 "working directory clean",翻译过来就是干净的工作目录。
如果你没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。 如果 Git 在你对它的配置中找不到相关信息,默认会打开 vim。屏幕会像这样:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: hello.php
#
~
~
".git/COMMIT_EDITMSG" 9L, 257C
如果你觉得 git add 提交缓存的流程太过繁琐,Git 也允许你用 -a 选项跳过这一步。命令格式如下:
git commit -a
我们先修改 hello.php 文件为以下内容:
<?php
echo '菜鸟教程:www.runoob.com';
echo '菜鸟教程:www.runoob.com';
?>
再执行以下命令:
$ git commit -am '修改 hello.php 文件'
[master 71ee2cb] 修改 hello.php 文件
1 file changed, 1 insertion(+)
为常用指令配置别名(可选) 有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。 1. 打开用户目录,创建 .bashrc 文件 部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行 touch ~/.bashrc 2. 在 .bashrc 文件中输入如下内容:
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'