Git 常用命令
基本
- git init 创建代码仓
- git clone 克隆代码仓
- git add <名称 可多个> 向暂存区添加文件或文件夹。可接受多个文件名,用空格分隔。可用句点.代替文件列表
- git commit 提交暂存区
- git commit –amend 更改最后一个 commit
git branch
- git branch 列出仓库中的分支
- git branch <分支> 创建新分支
- git branch <分支>
创建新分支,并使其指向指定 SHA 的 commit - git branch -d <分支> 删除分支。无法删除当前所在分支。无法删除含有独有 commit 的分支(除非使用-D 强制删除)
- git checkout <分支> 切换分支
git log
- git log 列出代码仓。关于 git log 后都可以加上指定 SHA 以查看指定的 commit
- git log –oneline 单行显示
- git log –stat 显示详细修改信息
- git log –patch 可简写-p,显示详细修改内容
- git log -p -w 显示补丁信息,但忽略仅修改空格的行
- git log –decorate 在 Git 1.13 之后,默认的 git log 就是这个命令。之前这个显示更多信息。
可以将 SHA 作为最后一个参数在-p 之后,以查看指定 commit
git show
- git show 显示最近的 commit
- git show <指定 commit 的 SHA> 查看指定 commit
git tag
- git tag 查看标签
- git tag -a <标签> 创建标签,如果没有-a 则没有注释。比如 git tag -a v1.0
- git tag -d <标签> <要删除 commit 对应的 SHA> 删除标签
git reset
- git reset –mixed <HEAD^> 将指定 commit 中做出的更改移至工作目录中
- git reset –soft <HEAD^> 将指定 commit 中做出的更改移至暂存区
- git reset –hard <HEAD^> 清除指定 commit 中做出的更改
git revert
- git revert
恢复之前创建的 commit
^ 表示父 commit。HEAD 后有多少个^,就是当前 commit 的多少级父
~ 表示第一个父 commit。HEAD 后一个,后的数字是当前 commit 的多少级父
如果^后有数字,以第一个父 commit 是运行 git merge 时所属的分支开始数,而第二个父 commit 是被合并的分支,依次类推
其他
- git rm <名称> 在暂存区移除文件或文件夹
- git diff 查看未提交的更改
- git status 查看代码仓状态
gitignore
在.gitignore 文件中添加的文件,会被忽略。
忽略格式通配符:
- #注释
- *与>=0 个字符匹配
- ?与 1 个字符匹配
- [abc]与 a、b 或 c 匹配
- **与嵌套目录匹配。比如 a/**/z 匹配:a/z、a/b/z、a/b/c/z 等
推送
- git pull github/gitee master
- git push -u github/gitee master
更新 Fork 源
- git remote add upstream https://github.com/被fork的仓库.git
- get checkout dev // 切换本地当前分支
- git fetch upstream
- git merge upstream/dev // 合并 fork 源 dev 分支至当前分支
- git push origin dev // 推送至远程仓库
换行符
git config –global core.autocrlf input // 提交时转换为LF,检出时不转换
修改当前仓库作者
1 | git config user.name "name" |
修改以前提交历史记录
1 | git filter-branch -f --env-filter ' |