git-本地文件命令

1. 初始化本地库
$ git init

文件夹中生成.git版本库,包括stage(index),还有git自动建立的分支master,指向master分支的指针HEAD指针。javascript

2. 工做区→缓存区→版本库 (工做区:电脑中能够看到的目录)

拆分做业java

$ git add [file1] [file2] 
$ git add [dir1] [dir2]
$ git add .
$ git commit -m "a readme file"

添加、提交一步到位git

$ git commit -am "once"
$ git commit -a -m "once"
$ git commit [file] [folder] -m ""
3. 提交时,漏掉了某文件
$ git add xxx
$ git commit --amend 编辑工具会显示最近一次提交的提交message,能够修改
$ git commit --amend -m 
$ git commit --amend --no-edit (加入--no-edit参数,会修复提交但不修改提交信息)
4. 撤销修改

a. 撤销工做区的修改,不影响缓存区shell

$ git checkout -- [file1] [file2]
$ git checkout -- .

b. 撤销缓存区的修改,将修改内容放回工做区,与工做区后期修改合并(clean 或者合并2处修改)缓存

$ git reset HEAD xxx(文件名)
$ git reset HEAD .
5. 查看
$ git status
$ git diff xxx                        工做区和缓存区
$ git diff --cached/staged      已经暂存起来的文件和上次提交时的快照之间的差别
$ git diff HEAD -- xxx             工做区和版本库  

注:修改并add一个版本,工做区再改回来,工做区与版本库无差异。有待add的文件, add 后无待commit的文件了
$ git log   显示从最近到远的提交日志
$ git log --stat        显示commit历史,以及每次commit发生变动的文件
$ git log -p [files]        显示指定文件的每次commit的diff
$ git log -p -2        经常使用 -p 选项展开显示每次提交的内容差别,用 -2 则仅显示最近的两次更新, 还有其余参数可选
$ git log -[number] --pretty --oneline        显示最近number次的log
$ git log --pretty=oneline        漂亮地展现
$ git log --graph        分支合并图
$ git log --graph --pretty=oneline --abbrev-commit        分支合并状况
6.回退版本

HEAD表示当前版本,即最新的提交,HEAD^上一个版本, HEAD^^, HEAD~100, clean。(--soft不会clean,modified)app

$ git reset --hard HEAD^
$ git reset --hard HEAD            等价于 clean掉工做区和缓存区
$ git reset --hard [commit_id]
$ git reset [commit_id] (非clean,有待添加的文件)
7.回到将来版本

当回退到某个版本x后,想回来,发现git log中,看不到x以后的commit记录(x+1)。此时,工具

a. 你的命令行还没关,你就能够顺着往上找,找到对应的commit id
b. $ git reflog,找到对应的commit id
$ git reset --hard 3628164
8.“储藏”和“恢复”工做现场
$ git stash
$ git stash list 查看
$ git stash apply    stash内容并不删除
$ git stash pop        恢复的同时把stash内容也删了
$ git stash drop  (.......)
9.文件重命名
$ git mv README.txt README

其实,运行 git mv 就至关于运行了下面三条命令:命令行

$ mv README.txt README
$ git rm README.txt
$ git add README
10.删除文件,手动删除以后,2个选择:
a.从版本库中删除 $ git rm xxx / add commit 
b.误删了,恢复 $ git checkout -- xxx (撤销工做区修改)

若是删除以前修改过而且已经放到暂存区域的话,则必需要用强制删除选项 -f(译注:即 force 的首字母),以防误删除文件后丢失修改的内容。
另一种状况是,咱们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然但愿保留在当前工做目录中。用 --cached 选项便可:指针

$ git rm --cached readme.txt

后面能够列出文件或者目录的名字,也可使用 glob 模式。比方说:日志

$ git rm log/\*.log

注意到星号 * 以前的反斜杠 ,由于 Git 有它本身的文件模式扩展匹配方式,因此咱们不用 shell 来帮忙展开(译注:实际上不加反斜杠也能够运行,只不过按照 shell 扩展的话,仅仅删除指定目录下的文件而不会递归匹配。上面的例子原本就指定了目录,因此效果等同,但下面的例子就会用递归方式匹配,因此必须加反斜杠。)。此命令删除全部 log/ 目录下扩展名为 .log 的文件。相似的好比:

$ git rm \*~

会递归删除当前目录及其子目录中全部 ~ 结尾的文件。

相关文章
相关标签/搜索