由于工作需要,使用Git进行代码管理,但是对Git的命令操作不熟练,因此在此记录Gi学习过程中,常用命令的介绍及应用场景。
Git是一个分布式版本管理系统,允许个若干不同的远端代码仓库进行交互。它直接记录快照,而非差异比较。几乎所有操作都是本地执行,只需要最后push到远程服务器保存即可。Git 中所有的数据在存储前都计算校验和(SHA-1 散列的方式),然后以校验和来引用。
Git中的文件有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)
有以下5个特点:
$ git help
$ git --help
$ man git-
例如,要想获得 git config 命令的手册,执行
$ git help config
这些命令都是无需联网就能使用的。
git clone
一般来说,一个新项目需要从远程服务器上,拉取一份基础框架的代码到本地上来。这时就可以通过上面的命令从远程服务器上克隆一个仓库到本地上,比如,要克隆 Git 的链接库 libgit2。
可以用下面的命令:
$ git clone https://github.com/libgit2/libgit2
命令执行后,会在当前目录下,创建一个名为“libgit2”的目录,代码全在这个目录下。
git status
该命令查看哪些文件处于什么状态,同时还显示了当前所在分支
git diff
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异。 也就是修改之后还没有暂存起来的变化内容。
git add |
git add 命令使用文件或目录的路径作为参数;如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。
git commit -m "你的注释信息"
git commit 命令是把之前用 git add 命令保存到暂存区的文件,提交到Git中,形成一个快照。这时文件还是在本地上。
git rm |
git rm 命令是把文件从暂存区中和工作目录中移除,这样以后就不会出现在未跟踪文件清单中了。
如果只是想移除暂存区的文件,而不移除工作目录的文件,在 rm 后面加上 --cached 就行
git rm --cached |
git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式 如:
git rm log/\*.log
git log
git log 命令是按照时间提交先后顺序列出所有的提交,最近提交的排在最上面。可以看到每个提交的hash、作者的名字和邮箱、提交时间及说明。
如果想查看每次提交的差异可以加上 -p | --patch 如:
git log -p | --patch
如果想只显示最近N次提交 可以加上 -N 来显示 如下,显示最2次提交的差异:
git log -p -2
git commit --amend
git commit --amend 命令是当你上次提交完后,发现还有几个配置文件忘记改了,这时改完后,先通过 git add 命令提交到暂存区,在运行git comit --amend命令,即可覆盖到上一次的提交。
git remote
git remote 命令会列出你指定的每一个远程仓库的简写。
加上 -v 选项 显示所有远程仓库的简写和对应的URL
git remote -v
git remote add
该命令会添加一个新的远程仓库,并指定方便使用的简写。
如下所示,添加一个远程仓库并命名为 pd
git remote add pb https://github.com/paulboone/ticgit
git fetch
该命令会从远程仓库中拉取数据到本地上。
例如,如果你想拉取 远程的仓库中有但你没有的信息,可以运行 git fetch pb
git fetch pb
执行完成后,你将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。
注意:
git push
该命令会把你指定的分支 推送 到你指定的远程仓库上。
例如,如果你想把master分支推送到original服务器上,就可以输入一下命令
git push original master
执行完成后,本地上的提交到所有快照全部都会备份到远程服务器上。
git remote show
该命令会列出远程仓库的 URL 与跟踪分支的信息,并告诉你当前处于那个分支。
git remote rename 原来仓库的名称 想修改的名称
例如,想把 pd 重新命名为 tem 就可以用下面的命令
git remote rename pd tem
git remote remove 或者 git remote rm
例如,不要使用 tem 这个远程仓库了,就可以用下面的命令
git remote remove tem
注意
以上就是Git做项目时涉及到的常用命令和应用场景,涵盖了从远程仓库拉取代码到本地操作,到从本地修改后,推送到远程仓库的全过程。熟练掌握了这些命令基本上对日常的事务使用足够了。