【Git】基础总结(一)
- 获取 Git 仓库
- 在现有目录中初始化仓库
$ git init
- 克隆现有的仓库
$ git clone https://github.com/florencemu/DataStructure-Learning
$ git clone https://github.com/florencemu/DataStructure-Learning [仓库重命名]
- 记录每次更新到仓库
工作目录下的每一个文件拥有以下两种状态:已跟踪或未跟踪。
已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。
工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。
编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。所以使用 Git 时文件的生命周期如下:
- 检查当前文件状态
$ git status
- 跟踪新文件
$ git add
执行以上命令后,只要在 Changes to be committed 这行下面的,就说明是已暂存状态。 如果此时提交,那么该文件此时此刻的版本将被留存在历史记录中。
- 暂存已修改文件
$ git add
这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。
4/18更新
$ git commit -am “” 集大成者!
- 状态概览
$ git status -s
- 忽略文件
创建一个名为 .gitignore 的文件,可列出要忽略的文件模式,使用标准的 glob 模式匹配。
星号匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符;
问号(?)只匹配一个任意字符;
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
使用两个星号** 表示匹配任意中间目录,比如a/**/z
可以匹配 a/z, a/b/z 或a/b/c/z
等。
举例如下:
$ cat .gitignore
*.[oa]
*~
- 查看已暂存和未暂存的修改
git diff
//查看尚未暂存的文件更新了哪些部分
git diff --cached
//查看已暂存的将要添加到下次提交里的内容
- 提交更新
git commit -m “说明”
- 移除文件
$ git rm
//从工作目录中手工删除文件
$ git rm -f
//删除之前修改过并且已经放到暂存区域的文件
$ git rm --cached
//从 Git 仓库中删除,但仍然希望保留在当前工作目录中
- 移动文件(重命名)
$ git mv file_from file_to
- 查看提交历史
- 按提交时间列出所有的更新
$ git log
- 筛选提交时间列出对应更新
$ git log -p -n
//显示最近n次提交
$ git log --since=2.weeks
//列出所有最近两周内的提交
- 显示每次提交的简略的统计信息
$ git log --stat
- 列出那些添加或移除了某些字符串的提交
$ git log -Sfunction_name
- 撤销操作
- 重新提交
$ git commit --amend
- 取消暂存的文件
$ git reset
- 撤消对文件的所有修改(危险)
$ git checkout
- 远程仓库的使用
- 查看远程仓库
$ git remote
$ git remote -v
//显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
- 添加远程仓库
$ git remote add [shortname] [url]
- 从远程仓库中抓取与拉取
$ git fetch [remote-name]
//这个命令会访问远程仓库,从中拉取所有你还没有的数据
- 推送到远程仓库
$ git push [remote-name] [branch-name]
//只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效。 当和其他人在同一时间克隆,必须先将他们的工作拉取下来并将其合并进你的工作后才能推送。
- 查看远程仓库
$ git remote show [remote-name]
- 远程仓库的移除与重命名
$ git remote rename [old] [new]
//重命名
$ git remote rm
//移除
- 打标签
- 以字母顺序列出标签
$ git tag
- 创建标签
$ git tag -a [filename] -m ‘标签信息’
//附注标签
$ git tag [tagname]
// 轻量标签(show不显示)
- 后期打标签
$ git tag -a [filename] 指定校验和
- 共享标签
$ git push origin [tagname]
- 删除标签
$ git tag -d [tagname]
$ git push [remote] :refs/tags/[tagname]
//更新远程仓库