Git 学习之旅

347 阅读5分钟

git-command

我们使用 git command 看看 git 有哪些可用的命令.

command

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。把知识点细化。

注意:command 后面的参数是 command 的参数,可选的参数是 git 的参数。

这些是在各种情况下使用的常见Git命令

启动工作区(另请参阅:git帮助教程)

  • clone 将存储库克隆到新目录
  • init 创建一个空的Git存储库或重新初始化一个现有的存储库

处理当前更改(另请参见:每天都有git帮助)

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

检查历史记录和状态(另请参见:git help修订版)

  • bisect 使用二进制搜索来查找引入了错误的提交
  • grep 打印与模式匹配的行
  • log 显示提交日志
  • show 显示各种类型的对象
  • status 显示工作树状态

成长,标记和调整您的共同历史

  • branch 列出,创建或删除分支
  • checkout 切换分支或还原工作树文件
  • commit 将更改记录到存储库
  • diff 显示提交,提交和工作树等之间的更改
  • merge 将两个或多个开发历史合并在一起
  • rebase 重新应用在另一个基本技巧之上的提交
  • tag 创建,列出,删除或验证使用GPG签名的标签对象

协作(另请参阅:git help工作流程)

  • fetch 从另一个存储库获取下载对象和参考
  • pull 从另一个存储库或本地分支中提取并与之集成
  • push 推送更新远程引用以及相关对象

'git help -a'和'git help -g'列出了可用的子命令和一些 概念指南。参见'git help <命令>'或'git help <概念>' 阅读有关特定子命令或概念的信息。

git 三种状态

  • 已提交(committed)
  • 已修改(modified)
  • 已暂存(staged)

Git 项目拥有三个阶段

  • 工作区
  • 暂存区
  • Git 目录

三个配置

  • git 系统配置 git config --system
  • git 用户配置 git config --global
  • git 本项目配置 git config --local

查看配置

git config --list --show-origin
git config --system --list
git config --global --list

获取和配置具体的信息:

git config --global user.name 'magnesium-'
git config --global user.email '66666@qq.com'
git config --global core.editor code

项目初始化

git init

向缓存区添加文件

  • 单个文件
git add *.c
git add LICENSE
  • 所有文件
git add *

* 通配符,表示除去.gitignore忽略的虽有文件

提交信息

  • 带有提示信息的内容
git commit -m 'your first commit-'

可能一个项目

  • clone
git clone https://github.com/libgit2/libgit2 new-dir

我们制定一个新的目录 new-dir

文件状态

可以通过

git status

获取文件在 git 系统中的状态

  • Untracked 未跟踪
  • Unmodified 未修改的
  • Modified 修改了
  • Staged 已跟踪

文件标记

  • A 先添加到缓存区
  • M 修改过的文件
  • ?? 新添加的未跟踪的文件

忽略文件

  • .gitignore 文件
  • 文件的匹配规则遵循:glob 匹配模式

查看暂未缓存的文件

git diff
git diff --staged
git diff --cached

提交

git commit -m  'you message'

移除文件

rm -rf 'file.name'
git rm 'file.name'
git rm -f 'file.name'
git rm --cached 'file.name'

移动文件

git mv file-form file-to

获取历史信息

git log
git log -p -2
git log --stat
git log --pretty=format:"%h - %an, %ar : %s"

%H 提交的完整哈希值 %h 提交的简写哈希值 %T 树的完整哈希值 %t 树的简写哈希值 %P 父提交的完整哈希值 %p 父提交的简写哈希值 %an 作者名字 %ae 作者的电子邮件地址 %ad 作者修订日期(可以用 --date=选项 来定制格式) %ar 作者修订日期,按多久以前的方式显示 %cn 提交者的名字 %ce 提交者的电子邮件地址 %cd 提交日期 %cr 提交日期(距今多长时间) %s 提交说明

撤销操作

git commit --amend

git reset HEAD CONTRIBUTING.md

git checkout -- CONTRIBUTING.md

请务必记得 git checkout -- <file> 是一个危险的命令。 你对那个文件在本地的任何修 改都会消失——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地 修改了,否则请不要使用这个命令。

查看远程仓库

git remote
git remote -v

添加远程仓库

git remote add pb https://github.com/paulboone/ticgit
git remote -v

抓取仓库

git remote add pb https://github.com/paulboone/ticgit
git fetch <remote>
git push origin master
git remote show <remote>
git remote rename pb paul

打标签

git tag -l
git tag --list
 git tag -l "v1.8.5*"

创建标签

Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。

辅助标签

-a 参数表示 annotated

-m 参数表述提示信息

git tag -a v1.4 -m "my version 1.4"

轻量标签

 git tag v1.4-lw

后期打标签

git tag -a v1.2 9fceb02

9fceb02 是提交的hash,使用 hash 后期打 tag

共享 tag

# git push 命令并不会传送标签到远程仓库服务器上
git push origin <tagname>
git push origin --tags

删除 tag

git tag -d <tagname>

git push origin --delete <tagname>

检出标签

git checkout -b version2 v2.0.0
# Switched to a new branch 'version2'

别名

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'

最后一次提交

git last

小结

分支

了解分支

新建、合并分支

管理分支

工作流

远程分支

基变

小总结

服务器上的git

分布式 git

GitHub

Git 工具

自定义 git

git 与其他系统

git 内容原理

参考