-
Git 常用命令
- 创建项目仓库:git init / git clone
- 文件添加及提交:git add / git commit
- 文件状态及差异:git status / git diff
- 文档撤销修改:git reset / git checkout
- 文件删除及重命名:git rm / git mv
-
创建仓库:git init / git clone
- git init
$ mkdir test
$ cd test/
$ git init
Initialized empty Git repository in /Users/tianqixin/www/test/.git/
#在 /www/test/.git/ 目录初始化空 Git 仓库完毕
现在你可以看到在你的项目中生成了 .git 这个子目录。 这就是你的 Git 仓库了,所有有关你的此项目的快照数据都存放在这里。
ls -a
. . .git
- git clone
- 使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改
- 如果你需要与他人合作一个项目,或者想要复制一个项目,看看代码,你就可以克隆那个项目。 执行命令:
git clone [url]
#[url] 为你想要复制的项目
- 实例:克隆 Github 上的项目
$ git clone git@github.com:schacon/simplegit.git
Cloning into ‘simplegit’…
remote: Counting objects: 13, done.
remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
Receiving objects: 100% (13/13), done.
Resolving deltas: 100% (2/2), done.
Checking connectivity… done.
克隆完成后,在当前目录下会生成一个 simplegit 目录:
$ cd simplegit/
$ ls
README Rakefile lib
- git add
- 已经追踪的文件:将修改从工作区保存到暂存区
- 未追踪的文件:加入git追踪范围
- 添加某个文件:git add file.c
- 添加所有文件:git add .
- 使用方法:
$ touch README
$ touch hello.php
$ ls
$ git status -s
?? README
?? hello.php
$ git add README hello.php
- git commit
- 将暂存区的所有内容提交到版本库
- 单步提交:git commit –m “commit info”
- 一次性提交:git commit –a
- 修改最后一次提交:git commit --amend
- 使用方法:
$ git add hello.php
$ git status -s
A README
A hello.php
$ git commit -m ‘第一次版本提交’
[master (root-commit) d32cf1f] 第一次版本提交
2 files changed, 4 insertions(+)
create mode 100644 README
create mode 100644 hello.php
git status
On branch master
Initial commit
Changes to be committed:
(use “git rm --cached …” to unstage)new file: README
new file: hello.php
- git diff
- git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别
- 比较工作区和暂存区差异
- 查看尚未暂存文件有哪些新的修改
- git diff
- 比较暂存区和版本库差异
- 查看已暂存文件和上次提交的快照之间的差异
- git diff –-cached [HEAD]
- git diff –-staged SHA
- 比较工作区和版本库差异
- 查看未暂存文件和最新提交文件快照的区别
- git diff HEAD(SHA1)
- 比较两个版本之间差异
- 查看不同版本之间的差异
- git diff SHA1 SHA2
- git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别
-
文档撤销修改:git reset / git checkout
- 撤销暂存区的内容
- git reset HEAD file.c
- 将暂存区的修改撤销掉,重新放回工作区
- 撤销工作区的修改
- git checkout – file.c
- 让文件回到最近一次commit或add的状态
- 若文件还没添加到暂存区:撤销后和版本库一样
- 若文件已添加到暂存区且做了修改:回到暂存区状态
- 撤销版本库的提交
- git reset – hard SHAI(HEAD^)
- 回退版本,并刷新到工作区中
- 先前的提交对象还在版本库中孤独地存在着
- 案例
- 案例1 : 某个文件被 add 添加到暂存区中,但突然发现有很大的纰漏,想要先把文件移出暂存区,以免被提交,操作命令如下:
git add test
git statuson branch master
No commits yet
Changes to be committed:
new file: test
git rebet HEAD – test
git status
On branck master
No commits yet
reset 可以将文件移出暂存区
-
文件删除及重命名:git rm/ git mv
- git rm
- 从工作目录和暂存区中删除
- git rm –f file.c
- 删除并提交后,该文件就不再被版本库追踪,但是版本库中仍然有这些文件的快照
- 避免文件出现在未跟踪清单中
- 从暂存区中删除,工作目录中保留
- git rm --cached file.c
- 包括:库文件、可执行文件、日志、临时文件
- 从工作目录和暂存区中删除
- git mv
- git mv old_file new_file
- 案例
删除操作
git rm hello.txt
git commit -m ‘提交说明’
重命名操作
$ git mv hello.txt hello2.txt
git commit -m ‘提交说明’