# Git 命令大全
工作区(working diretory) 用于修改文件 缓存区(stage) 是用来暂时存放工作区中修改的内容 提交历史(commit history) 提交代码的历史记录
1. 创建版本库
git init
2. 添加文件到暂存区
添加指定的文件到暂存区
git add 文件名
添加全文件到暂存区,保存新的添加和修改,但是不包括删除
git add .
保存修改和删除,但是不包括新建文件
git add -u
保存所有的修改,包括修改删除新建文件
git add -A
3. 代码提交到仓库区
提交暂存区到仓库,[message ]里为提交的内容说明
git commit -m "[message]"
提交暂存区的指定文件到仓库, file1,file2为指定文件的名称,[message ]里为提交的内容说明
git commit [file1][file2]... -m "[message]"
修改最近一次提交内容,适用于提交注释书写有误或者一遗漏提交文件,对于遗漏的文件需要git add提交到缓存区后才能执行
git commit --amend "[message]"
4. 代码回退
回退版本,一个……^表示一个版本
git reset HEAD^ 或者 git reset HEAD~n
代码回退到指定版本,id为指定的版本号
git reset commit -id
代码回退版本的几次修改,以下内容表示回退一个版本,但是所有的变更都移动到暂存区
git reset --soft HEAD~1
代码回退版本的几次修改,与上面不同的是,重置暂存区,并把所有的变更都移到工作区
git reset HEAD~1
代码回退版本的几次修改,与上面两个不同的是,会重置暂存区,并且会将工作区代码清空
git reset --hard HEAD~1
5. 分支的创建和删除
查看本地所有分支
git branch
查看远程所有的分支
git branch -a
创建分支,name为建立分支的名称
git branch name
删除分支,name为要删除分支的名称
git branch -d name
删除远程的分支,name为要删除分支的名称
git push origin --delete name
重命名分支,将name1,命名为name2
git branch -m name1 name2
6. 切换与合并分支
创建name分支,并切换到name分支上
git checkout -b name
在当前分支上合并name分支
git merge name
切换分支,切换分支到name
git checkout name
7. Tag
列出所有的tag
git tag
查看tag信息,名称为name
git show name
8. 推送
git push
9. 删除未添加到版本库中的文件或者文件夹
删除untracked files
git clean -f
连untracked files 的目录页一起删掉
git clean -fd
在使用清理 git clean之前,建议加上 -n 来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd
添加忽略文件 .gitignore
.gitignore配置文件用于配置不需要加入版本管理的文件。
配置语法: "/" 开头表示目录; "*" 通配多个字符; "?" 通配单个字符 "[]" 包含单个字符的匹配列表; "!" 表示不忽略(跟踪)匹配到的文件或目录;
说明:git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
示例:(1) foder/* 忽略目录foder下的全部内容,不管是根目录下的 /foder/ 目录,还是某个子目录 /list/foder/ 目录,都会被 忽略。
(2) /foder/* 说明:忽略根目录下的 /foder/ 目录的全部内容;
(3) /*!.gitignore
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore文件,根目录下的 /fw/bin/ 和 /fw/sf/
注意问题: .gitignore文件只对还没有加入版本管理的文件起作用,如果之前已经用git把要忽略的文件纳入了版本库,就不起作用了