title: 代码管理工具Git基础
tags:
  - Linux
  - Git
categories:
  - 工具
top_img: false
cover: '/upload/cdn0files/20200721092022.jpg'
abbrlink: fde3401b
date: 2019-12-31 10:30:40

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 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

安装

$ sudo apt-get install git

新建和初始化本地库

$ git init

从服务器上clone代码

$ git clone ADDRESS

ADDRESS就是项目地址

查看新文件

$ git status

添加更改

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

配置用户名和邮箱

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

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

提交更改说明

$ git commit -m “Descriptive Message”

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

创建新分支

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

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

远程推送

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

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

$ git push --set-upstream origin master 

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

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

拉取更新

$ git pull origin master
$ git pull

撤销推送

已经执行git addgit commit

git reset --hard origin/master

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

基本语法

$ 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

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

在当前变更上工作

参见:git help everyday

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

检查历史和状态

参见:git help revisions

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

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

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

协同

参见:git help workflows

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