Git - Book
配置
// 如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息
git config --global user.name "John Doe"
// 设置默认文本编辑器
git config --global core.editor emacs
// 列出所有 Git 当时能找到的配置
git config --list
// 通过输入 git config <key>: 来检查 Git 的某一项配置
$ git config user.name
John Doe
获取帮助
/**
* git help <verb>
* git <verb> --help
* man git-<verb>
*/
// 获得 config 命令的手册
$ git help config
Git 仓库
======= 在现有目录初始化仓库 =======
$ git init
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'
======= 克隆现有的仓库 =======
---- git clone [url] [foldername] ----
$ git clone https://github.com/libgit2/libgit2
$ git clone https://github.com/libgit2/libgit2 mylibgit
======= 检查当前文件状态 ========
$ git status //状态
$ git status -s //状态简览
$ git status --short //状态简览
$ git add <file>
======= 提交 ========
$ git commit
$ git commit -m "Story 182: Fix benchmarks for speed"
// 跳过使用暂存区域
// -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
$ git commit -a -m 'added new benchmarks'
====== 删除 =======
$ git rm <file>
$ git rm -f <file> // 强制删除之前修改过并且已经放到暂存区域的文件
$ git rm --cached <file> // 从暂存区域移除,但是让文件保留在磁盘,git不再跟踪
// git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。
$ git rm log/\*.log
======= 移动文件 =======
$ git mv file_from file_to // 文件改名 git mv README.md README
======= 查看提交历史 =======
$ git log
====== 撤消操作 ======
//有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:
$ git commit --amend
$ git reset HEAD <file> // 取消暂存的文件
$ git checkout -- <file> // 撤消对文件的修改
远程仓库
====== 查看远程仓库 ======
$ git clone https://github.com/schacon/ticgit
$ cd ticgit
$ git remote 或者 $ git remote -v
===== 更新远程分支列表(当本地origin好多分支远程删除时可以用此命令同步远程已经删除的分支) ======
git remote update origin -p
====== 添加远程仓库 ======
$ git remote add <shortname> <url>
忽略文件
文件 .gitignore
的格式规范如下:
-
所有空行或者以
#
开头的行都会被 Git 忽略。 -
可以使用标准的 glob 模式匹配。
-
匹配模式可以以(
/
)开头防止递归。 -
匹配模式可以以(
/
)结尾指定目录。 -
要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(
!
)取反。
标签
Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)
//创建轻量标签,不需要使用 -a、-s 或 -m 选项
git tag v1.4-lw
//创建一个附注标签 运行tag 命令时指定 -a 选项;
// -m 选项指定了一条将会存储在标签中的信息。
git tag -a v1.4 -m 'my version 1.4'
// 后期打标签 需要在命令的末尾指定提交的校验和(或部分校验和)
git tag -a v1.2 9fceb02
共享标签
默认情况下,git push
命令并不会传送标签到远程仓库服务器上。可以运行 git push origin [tagname]
显式地推送标签到共享服务器上。如果想要一次性推送很多标签,也可以使用带有 --tags
选项的 git push
命令
// 推送多个标签到远程服务器
git push origin --tags
检出标签
在 Git 中你并不能真的检出一个标签,因为它们并不能像分支一样来回移动。 如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname]
在特定的标签上创建一个新分支:
$ git checkout -b version2 v2.0.0
案例:
如果不小心master分支合并了错误的开发分支,revert之后再次合并会导致下次开发分支合并过来的时候没有什么新增加的内容,下面是用reset回到最近一次正确提交的步骤:
1、git reset [--hard] commitId
git push -f (如果此步骤报错则需要在git上setting->Repository - Protected Branches 下解除一下master分支的保护机制)
同时,其它拉取过最新maser分支的可用下面的命令同步一下reset后的master