创建工作目录和常用指令
工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。
日常使用只要记住下图6个命令:
创建本地仓库
1.git init 新建一个git库
2.git clone 从远程复制git库
git文件操作
查看文件状态
git status
添加文件
添加指定文件到暂存区:git add [file1] [file2] ...
添加指定目录到暂存区:git add [dir]
添加当前目录的所有文件到暂存区:git add .
移除文件与目录
从暂存区删除文件:git rm --cached <file>
通过重写目录树移除add文件:git reset HEAD <file>...
移除所有未跟踪文件:git clean -df (-d表示包含目录,-f表示强制清除)
查看文件修改后差异
比较差异:git diff [files]
比较暂存区的文件与之前已经提交过的文件:git diff --cached
比较repository与工作空间中的文件差异:git diff HEAD~n
签出
#用法一
git checkout [-q] [<commit>] [--] <paths>...
#用法二
git checkout [<branch>]
#用法三
git checkout [-m] [[-b]--orphan] <new_branch>] [<start_point>]
<commit>是可选项,如果省略则相当于从暂存区(index)进行检出
$ git checkout
#汇总显示工作区、暂存区与HEAD的差异。
$ git checkout HEAD
#同上
$ git checkout -- filename
#用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。
$ git checkout branch -- filename
#维持HEAD的指向不变。用branch所指向的提交中filename替换暂存区和工作区中相 ??应的文件。注意会将暂存区和工作区中的filename文件直接覆盖。
$ git checkout -- . 或写作 git checkout .
#注意git checkout 命令后的参数为一个点(“.”)。这条命令最危险!会取消所有本地的 ?#修改(相对于暂存区)。相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何确认的机会!
$ git checkout commit_id -- file_name
#如果不加commit_id,那么git checkout -- file_name 表示恢复文件到本地版本库中最新的状态。
提交
提交暂存区到仓库区
$ git commit -m [message]
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
# 提交工作区自上次commit之后的变化,直接到仓库区,跳过了add,对新文件无效
$ git commit -a
# 提交时显示所有diff信息
$ git commit -v
# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]
# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...
修订提交
如果我们提交过后发现有个文件改错了,或者只是想修改提交说明,这时可以对相应文件做出修改,将修改过的文件通过"git add"添加到暂存区,然后执行以下命令:
#修订提交
git commit --amend
撤销提交
原理就是放弃工作区和index的改动,同时HEAD指针指向前一个commit对象
#撤销上一次的提交
git reset --hard HEAD~1
要通过git log查看提交日志,也可直接指定提交编号或序号
git revert <commit-id>
这条命令会把指定的提交的所有修改回滚,并同时生成一个新的提交。
日志与历史
查看提交日志可以使用git log指令,语法格式如下:
#查看提交日志
git log [<options>] [<revision range>] [[\--] <path>…?]
查看所有分支日志
git reflog
撤销更新
撤销暂存区更新:git reset HEAD <file>
撤销本地仓库更新:
01:git reset --hard HEAD^
02:git reset --hard HEAD~1
03:git reset --hard HEAD --id
现在又想恢复被撤销的提交可用"git reflog"查看仓库中所有的分支的所有更新记录,包括已经撤销的更新,撤销方法与前面一样。
git reset --hard HEAD@{7}
git reset --hard e0e79d7
--hard:撤销并删除相应的更新
--soft:撤销相应的更新,把这些更新的内容放到Stage中
删除文件
# 删除未跟踪文件
$ 如果文件还是未跟踪状态,直接删除文件就可了,bash中使用rm可以删除文件
# 删除已提交文件
$?git rm <options> <file>
-f 强制删除
撤销删除:git checkout -- <file>...
# 删除暂存区的文件,不删除工作区的文件
$ git rm --cached <file>
$ git reset HEAD <file>
|