【Git】基础总结(一)

  • 获取 Git 仓库
  1. 在现有目录中初始化仓库

$ git init

  1. 克隆现有的仓库

$ git clone https://github.com/florencemu/DataStructure-Learning
$ git clone https://github.com/florencemu/DataStructure-Learning [仓库重命名]

  • 记录每次更新到仓库

工作目录下的每一个文件拥有以下两种状态:已跟踪或未跟踪。

已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。
工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。所以使用 Git 时文件的生命周期如下:

【Git】基础总结(一)

  1. 检查当前文件状态

$ git status

  1. 跟踪新文件

$ git add
执行以上命令后,只要在 Changes to be committed 这行下面的,就说明是已暂存状态。 如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。

  1. 暂存已修改文件

$ git add
这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
4/18更新
$ git commit -am “” 集大成者!

  1. 状态概览

$ git status -s

  1. 忽略文件

创建一个名为 .gitignore 的文件,可列出要忽略的文件模式,使用标准的 glob 模式匹配。
星号匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符;
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
使用两个星号** 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。

举例如下:

$ cat .gitignore
*.[oa]
*~

  1. 查看已暂存和未暂存的修改

git diff
//查看尚未暂存的文件更新了哪些部分
git diff --cached
//查看已暂存的将要添加到下次提交里的内容

  1. 提交更新

git commit -m “说明”

  1. 移除文件

$ git rm
//从工作目录中手工删除文件
$ git rm -f
//删除之前修改过并且已经放到暂存区域的文件
$ git rm --cached
//从 Git 仓库中删除,但仍然希望保留在当前工作目录中

  1. 移动文件(重命名)

$ git mv file_from file_to

  • 查看提交历史
  1. 按提交时间列出所有的更新

$ git log

  1. 筛选提交时间列出对应更新

$ git log -p -n
//显示最近n次提交
$ git log --since=2.weeks
//列出所有最近两周内的提交

  1. 显示每次提交的简略的统计信息

$ git log --stat

  1. 列出那些添加或移除了某些字符串的提交

$ git log -Sfunction_name

  • 撤销操作
  1. 重新提交

$ git commit --amend

  1. 取消暂存的文件

$ git reset

  1. 撤消对文件的所有修改(危险)

$ git checkout

  • 远程仓库的使用
  1. 查看远程仓库

$ git remote
$ git remote -v
//显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL

  1. 添加远程仓库

$ git remote add [shortname] [url]

  1. 从远程仓库中抓取与拉取

$ git fetch [remote-name]
//这个命令会访问远程仓库,从中拉取所有你还没有的数据

  1. 推送到远程仓库

$ git push [remote-name] [branch-name]
//只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当和其他人在同一时间克隆,必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。

  1. 查看远程仓库

$ git remote show [remote-name]

  1. 远程仓库的移除与重命名

$ git remote rename [old] [new]
//重命名
$ git remote rm
//移除

  • 打标签
  1. 以字母顺序列出标签

$ git tag

  1. 创建标签

$ git tag -a [filename] -m ‘标签信息’
//附注标签

$ git tag [tagname]
// 轻量标签(show不显示)

  1. 后期打标签

$ git tag -a [filename] 指定校验和

  1. 共享标签

$ git push origin [tagname]

  1. 删除标签

$ git tag -d [tagname]
$ git push [remote] :refs/tags/[tagname]
//更新远程仓库