2020.9.1 更新

推荐一个学习Git命令的非常棒的在线工具:https://learngitbranching.js.org/

前言

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git是Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git的功能特性,从一般开发者的角度来看,git有以下功能:

  1. 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
  2. 在自己的机器上根据不同的开发目的,创建分支,修改代码。
  3. 在单机上自己创建的分支上提交代码。
  4. 在单机上合并分支。
  5. 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
  6. 生成补丁(patch),把补丁发送给主开发者。
  7. 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
  8. 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

安装

1
$ sudo apt-get install git

新建和初始化本地库

1
$ git init

从服务器上clone代码

1
$ git clone ADDRESS

ADDRESS就是项目地址

查看新文件

1
$ git status

添加更改

1
2
$ git add filename
$ git add . //用通配符提交所有更改

配置用户名和邮箱

1
2
$ git config --global user.email EMAIL
$ git config --global user.name NAME

“EMAIL” 即你的 email 地址,“NAME” 则是你的用户名

提交更改说明

1
$ git commit -m “Descriptive Message”

“Descriptive Message” 即为你的提交的描述性信息

创建新分支

1
2
$ git checkout -b BRANCH
$ git branch //查看是否创建了新分支

“BRANCH” 即为你新分支的名字

远程推送

1
2
3
$ git remote add origin URL //“URL” 即为远程仓库地址
$ git push -u origin +master //+号是在本地没有整合下强制提交
$ git remote rm origin //删除远程origin

建立远程和本地仓库的链接

1
$ git push --set-upstream origin master 

将本地分支追踪到上游相应的分支

1
$ git branch --set-upstream-to=origin/<分支> master 

拉取更新

1
2
$ git pull origin master
$ git pull

撤销推送

已经执行git addgit commit

1
git reset --hard origin/master

注意:远程仓库会直接覆盖本地仓库

基本语法

1
2
3
4
5
$ git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]

基本命令简述

开始一个工作区

参见:git help tutorial

1
2
clone     克隆一个仓库到一个新目录
init 创建一个空的 Git 仓库或重新初始化一个已存在的仓库

在当前变更上工作

参见:git help everyday

1
2
3
4
add       添加文件内容至索引
mv 移动或重命名一个文件、目录或符号链接
reset 重置当前 HEAD 到指定状态
rm 从工作区和索引中删除文件

检查历史和状态

参见:git help revisions

1
2
3
4
5
bisect     通过二分查找定位引入 bug 的提交
grep 输出和模式匹配的行
log 显示提交日志
show 显示各种类型的对象
status 显示工作区状态

扩展、标记和调校您的历史记录

1
2
3
4
5
6
7
branch       列出、创建或删除分支
checkout 切换分支或恢复工作区文件git
commit 记录变更到仓库
diff 显示提交之间、提交和工作区之间等的差异
merge 合并两个或更多开发历史
rebase 在另一个分支上重新应用提交
tag 创建、列出、删除或校验一个 GPG 签名的标签对象

协同

参见:git help workflows

1
2
3
fetch     从另外一个仓库下载对象和引用
pull 获取并整合另外的仓库或一个本地分支
push 更新远程引用和相关的对象