Git 是 Linus Torvalds 为了帮助管理 Linux 内核开拓而开拓的一个开放源码的版本掌握软件。
Git 与常用的版本掌握工具 CVS, Subversion 平分歧,它采取了分布式版本库的办法,不必做事器端软件支持。
干系专业名词

staged changes:已变动的东西
unstaged changes:未变动的东西
stage 暂存区
事情区(Working Directory)便是你在电脑里能看到的目录,比如我的dpdk文件夹便是一个事情区:
版本库(Repository)
事情区有一个隐蔽目录.git,这个不算事情区,而是Git的版本库。
Git的版本库里存了很多东西,个中最主要的便是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
总结git config
git config -l 查看当前git环境详细配置
git config --system --list 查看系统config,配置文件在git安装目录/etc/gitconfig
git config --global --list 查看当前用户配置,配置文件在~/gitconfig
git config --local --list 查看当前仓库配置信息
git config -e 针对当前仓库
git config -e --global 针对系统上所有仓库
git init && clonegit init 在当前目录新建一个仓库
git init [project-name]在一个目录下新建本地仓库
git clone <repo> 从现有的Git仓库中拷贝项目(类似svn checkout)
克隆到指定目录
git clone <repo> <directory> 参数解释:Gitc仓库 directory 本地目录
比如,要克隆Ruby措辞的Git代码仓库Git,可以用下面的命令:
git clone git://github.com/schacon/grit.git
实行该命令后,会在当前目录下创建一个名为grit的目录,个中包含一个.git的目录,用于保存下载下来的所有版本记录。
如果要自己定义要新建的项目目录名称,可以在上面的命令末端指定新的名字:
git clone git://github.com/scharon/grit.git mygrit
git diffgit diff HEAD -- ,查看最新本地版本库和事情区所有文件的差异
git diff HEAD --[file-name] 查看最新本地版本库和事情区文件的却别
git diff HEAD^ --[file-name] 查看本地上一个版本和事情区文件的却别
git diff [local branch] origin/[remote branch] 比较本地分支和远程分支的差异
git statusgit status [file-name] 查看指定文件状态
git status -s 查看所有文件状态
git addgit add [file-name1] [file-name2] ... 从事情区添加指定文件到暂存区
git add . 将事情区的被修正的文件和新增的文件提交到暂存区,不包括被删除的文件
git add -u . u指update,将事情区的被修正的文件和被删除的文件提交到暂存区,不包括新增的文件
git add -A . A指all,将事情区被修正、被删除、新增的文件都提交到暂存区
git commitgit commit -m [message] 将暂存区所有文件添加到本地仓库
git commit [file-name1] [file-name2] -m [message] 将暂存区指定文件添加到本地仓库
git commit -am [massage] 将事情区的内容直接加入本地仓库
git commit --amend 快速将当前文件修正合并到最新的commit,不会产生新的commit。在提交commit后创造还有部分文件修正忘却提交了可以是用该命令
加-m是指直接在后面写上版本的注释,不加-m的话会用一个vim打开文件让你写入massage,有未追踪的文件将会失落败,须要add加入暂存区。
git resetgit reset命令用于回退版本,可以指定退回某一次提交的版本
语法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]
HEAD 解释:
HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本
以此类推...
可以利用 ~数字表示
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本
以此类推...
$ git reset HEAD^ # 回退所有内容到上一个版本
$ git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本
$ git reset 052e # 回退到指定版本
创建仓库命令git init 初始化仓库
git clone 拷贝一份远程仓库,也便是下载一个项目
提交与修正git add 添加文件到暂存区
git status 查看仓库当前的状态,显示有变更的文件
git diff 比较文件的不同,即暂存区和事情区的差异
git commit 提交暂存区到本地仓库
git reset 回退版本
git rm 将文件从暂存区和事情区中删除
git mv 移动或重名事情区文件
提交日志git log 查看历史提交记录
git blame <file> 以列表式查看指定文件的历史修正记录
远程操作git remote 远程仓库操作
git fetch 从远程获取代码库
git pull 下载远程代码并合并
git push 上传远程代码并合并
分支管理git branch (branchname)创建分支命令
git branch 列出分支,没有参数时,git branch 会列出你在本地的分支
git branch -d (branchname) 删除分支命令
git checkout (branchname) 切换分支命令
git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,从而在该分支中操作
git merge 合并分支命令
查看提交历史git log 查看历史提交记录
git blame <file> 以列脸色势查看指定文件的历史修正记录
git tag 打标签(6条) git 打tag标签_倒骑驴走着瞧的博客-CSDN博客
达到一个主要的阶段,并希望永久记住那个特殊的提交快照,,你可以git tag给它打上标签
打patchpatch 指令让用户利用设置修补文件的办法,修正,更新原始文件。倘若一次仅修正一个文件,可直接在指令列中下达指令依序实行。如果合营修补文件的办法则能一次修补大批文件,这也是linux系统核心的升级方法之一。
推举大家利用git的format-patch和am命令进行天生patch和打patch,用此方法得到的patch实在便是commit里提交的code修正以及commit信息
方法一:
git diff > test.patch 天生patch
git diff 文件名 > test.patch 指定某个文件的修正打patch可以利用
git diff --cached > test.patch 已经实行git add 在想打patch可以利用
git apply --check test.patch 查看patch
git apply test.patch 利用patch
对已经提交的代码打patch ,git log 查看那些是须要打ptach的
方法二:
操作步骤:
1、 首先通过git log 查看有那些commit ID,一共提交了多少次
2、 例如一共提交4次,commit A、commit B、commit C、commit D;把第一次或者其他次提交的(不包括第一次提交)都天生patch
git format-patch ID(commit A)
后会天生patch文件,例如00001.patch
3、 在利用git am之前,你要首先git am –abort 一次,来放弃掉以前的am信息。才可以进行一次全新的am
4、 先检讨patch文件:git apply –stat 00001.patch
5、 检讨能否运用成功:git apply –check 00001.patch
6、 打补丁:git am –signoff < 00001.patch
(利用-s或—signoff选项,可以coomit 信息中加入Signed-off-by信息)
其他用法:
git format-patch 打ptach 这个利用于 已经提交的代码
git format-patch commit_id1 commit_id2 天生patch
git apply --check 系统天生的名字 查看patch
git am 系统天生的名字.patch 运用patch
git format-patch HEAD^ 天生最近的1次commit的patch
git format-patch HEAD^^ 天生最近的2次commit的patch