Pro Git第二章学习笔记:Git之远程仓库、历史记录、标签、别名等操作


注:本节是 progit第二章的简短笔记。
最重要的是学会自己查看文档

1. 获取git仓库

获取git仓库有两种方式:
  1. 将没有进行版本控制的本地目录转换为git仓库:
    进入任意目录,命令行键入git init,生成.git文件夹,开始版本控制。但此时没有对任何文件进行追踪,使用git add .会将当前文件夹下(除去.gitignore文件排除的)所有文件进行追踪;然后使用git add LICENSE添加license;最后使用git commit -m "initial project version"提交。
  2. 从其他服务器clone一个已存在的git仓库
    git克隆仓库的命令是git clone <url>。如:
    git clone https://github.com/libgit2/libgit2
    示例命令使用了http协议clone了git的链接库libgit2

git支持的协议包括:

http://协议

ssh://协议

git://协议

2. 记录每次更新到仓库

git status 查看所有文件的详细状态
git add your_filename 开始追踪尚未track的文件
git add your_filename 将已更改的已追踪文件提交到暂存区
git status -s 简短的文件状态:A, M, ??标记分别表示新添加到暂存区、已修改文件、新追踪的文件(MM表示修改后暂存又修改)
.gitignore文件 忽略文件中指明的内容,github有一个详细的.gitignore文件列表,链接为https://github.com/github/gitignore
git diff 查看当前文件和暂存文件的差异
git diff --staged 比较暂存文件和最后一次提交的文件的差异
git commit 提交暂存区(会出现默认的编辑器让你输入提交信息
git commit -m "your_commit_explanation" 直接输入提交信息不打开文本编辑器
git commit -a -m "your_commit_explanation" 将所有已经追踪的文件直接提交,无需git add添加到暂存区
git rm filename 移除已追踪文件
git mv old_filename new_filename 移动或者重命名

3 查看提交历史——git log使用

语法:git log [] [] [[--] …​]
在命令行输入```git help log```或者```git log --help```获取帮助

git log的常用选项

git log的常用选项
选项 说明
-p 按补丁格式显示每个提交引入的差异。
--stat 显示每次提交的文件修改统计信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。
--relative-date 使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)。
--graph 在日志旁以 ASCII 图形显示分支与合并历史。
--pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline、short、full、fuller 和 format(用来定义自己的格式)。
--oneline --pretty=oneline --abbrev-commit 合用的简写。

git log -p -2

表示 按照补丁格式输出最近两次提交引入的差异

限制 git log 输出的选项

选项 说明
- 仅显示最近的 n 条提交。
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。
--author 仅显示作者匹配指定字符串的提交。
--committer 仅显示提交者匹配指定字符串的提交。
--grep 仅显示提交说明中包含指定字符串的提交。
-S 仅显示添加或删除内容匹配指定字符串的提交。

git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" --before="2008-11-01" --no-merges -- t/ 查看 Junio Hamano 在 2008 年 10 月其间在目录t下面除了合并提交之外的哪一个提交修改了测试文件

4. 撤销操作

  • git commit --amend:将暂存区中的文件提交,这会覆盖上一次提交的结果。
  • git reset HEAD filename:取消filename文件的暂存
  • git checkout -- filename:将filename文件恢复到上次提交的版本

5. 远程仓库的使用

如果你使用 clone 命令克隆了一个仓库,命令会自动将其添加为远程仓库并默认以 “origin” 为简写
命令 作用
git remote 显示已经指定的所有远程仓库
git remote -v 显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个方便使用的简写
git fetch <remote> 访问远程仓库,从中拉取所有你还没有的数据。
不会自动合并或修改你当前的工作
git push <remote> <branch> 将本地的分支推送到remote服务器
如git push origin master将 master 分支推送到 origin 服务器
你需要有服务器的写入权限,且之前没有人推送过时,这条命令才能生效
git remote show <remote> 列出远程仓库的 URL 与跟踪分支的信息,并说明运行git pullgit push的效果
git remote rename old_name new_name 重命名
git remote remove name 移除name仓库,remove可以用rm替换

2.6 打标签(手动指定版本)

  • git tag: 列出已有标签
  • git tag --list “str": 匹配含有”str“的标签,--list简写为-l
  • git tag v1.3: 给提交打上v1.3标签(轻量标签)
  • git tag -a v1.4 -m "my version 1.4":给提交打上标签v1.4
  • git show v1.4: 匹配标签v1.4的信息(标签信息和提交信息)
  • git tag -a v1.2 9fceb02: 补打标签,9fceb02是部分校验和
  • git push origin <tagname>git push不推送标签,必须显式指定来共享标签,该过程就像推送共享远程分支
  • git tag -d tag_name: 删除本地tag_name标签
  • git push <remote> :refs/tags/<tagname>git push不推送标签,必须显式指定来删除标签
  • git push origin --delete : 同上

检出标签:detached HEAD状态,详见here

2.7 git别名

如果不想每次都输入完整的 Git 命令,可以通过 git config 文件来轻松地为每一个命令设置一个别名。如:
git config --global alias.co checkout
给checkout动作设置了别名co

猜你喜欢

转载自blog.csdn.net/qq_34769162/article/details/108616647
今日推荐