Git 基本操作方法
1. Git 安装方法
方法1:
访问 git官网,下载 git-xx.exe,并进行安装。
方法2:
也可以选择使用 cygwin 中进行安装,详细查看博文 《Cygwin高级篇(1)—工具配置及用法总结》,这样方便统一管理。
2. Git 配置方法
本篇文章以方法2为例。
安装完 Git 之后,要做的第一件事就是设置你的用户名和邮件地址。 这一点很重要,因为每一个 Git 提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改,指令如下:
git config --global user.name "jllu" git config --global user.email 1234@qq.com
设置 Git 默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim,指令如下:
git config --global core.editor vim
设置 Git 的差异分析工具,指令如下:
git config --global merge.tool vimdiff
如果想要检查你的配置,可以列出所有 Git 当前能找到的配置,指令如下:
git config --list


也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,指令如下:
git config user.name
例如:查看自带的版本。
git --version


3. Git 基本概念
我们先来理解下 Git 工作区、暂存区和版本库概念。
(1)工作区(workspace):就是你在电脑里能看到的目录。
(2)暂存区(staging area):英文叫stage或index。一般存放在.git目录下的index文件中,所以我们把暂存区有时也叫作索引(index)。
(3)版本库(repository):分为本地仓库(local repository)和远程仓库(remote repository),工作区有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库


4. Git 常用操作
Git 的工作就是创建和保存你项目的快照及与之后的快照对比。
Git常用的以下6个命令:git clone、git push、git add、git commit、git checkout、git pull。


4.1 创建仓库
| 指令名称 | 指令说明 |
|---|---|
| git init | 初始化仓库 |
| git add | 添加文件到暂存区 |
| git commit | 将暂存区内容添加到仓库中 |
(1)初始化 Git 仓库
初始化一个 Git 仓库,在执行完成初始化指令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。初始化有两种方式:
方式1:
用当前目录作为 Git 仓库,我们只需使它初始化,如下:
git init
方式2:
初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中,如下:
git init demo_repo

(2)增加文件
git add main.c
main.c 文件内容如下:
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 0;
}(3)提交注释
git commit -m '初始化项目版本'

4.2 克隆仓库
git clone <repo>
如果需要克隆指定的目录,可以用以下格式:
git clone <repo> <directory>
以克隆 grit 工程为例,如下:
git clone git://github.com/schacon/grit.git

4.3 提交与修改
Git 的工作就是创建和保存你的项目的快照及与之后的快照进行对比。
| 指令名称 | 指令说明 |
|---|---|
| git add | 添加文件到仓库 |
| git status | 查看仓库当前状态,显示有变更的文件 |
| git diff | 比较文件的不同,即暂存区和工作区的差异 |
| git commit | 提交暂存区到本地仓库 |
| git reset | 回退版本 |
| git rm | 删除工作区文件 |
| git mv | 移动或重命名工作区文件 |
修改 main.c 内容如下:
#include <stdio.h>
int main(void)
{
printf("Hello, Tom!\n");
return 0;
}使用查看暂存区和工作区的差异,如下:

使用 git status 显示有变更的文件,如下:

4.4 提交日志
| 指令名称 | 指令说明 |
|---|---|
| git log | 查看历史提交记录 |
| git blame <file> | 以列表形式查看指定文件的历史修改记录 |
4.5 远程操作
| 指令名称 | 指令说明 |
|---|---|
| git remote | 远程仓库操作 |
| git fetch | 从远程获取代码库 |
| git pull | 下载远程代码并合并 |
| git push | 上传远程代码并合并 |
5. Git 分支管理
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。
有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。
5.1 创建分支命令
git branch (branchname)

5.2 切换分支命令
git checkout (branchname)

5.3 列出分支
git branch

5.4 删除分支
git branch -d (branchname)


5.5 分支合并
一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用以下命令将任何分支合并到当前分支中去。
git merge
5.6 合并冲突
合并不仅仅是简单的文件添加、移除的操作,Git 也会合并并修改。
6. 总结
实际应用中,可以不用记忆这些复杂的指令,通过 git 图形客户端即可直观操作,如:TortoiseGit、GitHub Desktop 等。
更多 git 图形客户端,可查看 git 官网。

