git 命令
git
# 查看git常用命令git help -a
# 查看全部git子命令
git配置
- 配置
- `git config --global user.name "IfanTsai"`
- `git config --global user.email "cyfxxd@foxmail.com"`
- `git config --global core.pager ''`显示配置信息
.gitignore
- 强制添加.gitignore忽略的文件
git add -f <file name>
- 查看.gitignore策略生效行号
git check-ignore -v <file name>
新建代码库
- 在当前目录新建一个仓库
git init
- 下载一个项目和它的整个历史代码
url格式:
https://github.com/[userName]/reposName
git clone [url]
添加删除文件
- 添加指定文件到暂存区
git add [file1] [file2]
- 一个文件多个提价
git add -p [file]
- 删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2]
- 文件修改名字,并且将这次改名放入暂存区
git mv [file-origin] [file-renamed]
代码提交
- 提交暂存区到仓库
git commit -m [message]
- 直接从工作区提交到仓库, 前提该文件已经有仓库中的历史版本
git commit -a -m [message]
- message编写格式 git commit message格式
查看信息
- 显示变更信息
git status
git status -sb
# short and branch - 显示提交历史
git log
git log --oneline
git log <filename>
git log --grep <msg>
git log -n
- 查看某个提交
git show <hash值>
git show HEAD
# 最近一次提交git show HEAD^
# 最近的前一次git show HEAD~1
# 最近的前一次git show HEAD^^
# 再前一次 - 查看变更
- 逐行查看文件的修改历史
git blame <file name>
- 从第100行到110行逐行查看文件修改历史
git blame -L 100, 110 <file name>
同步远程仓库
- 查看远程仓库
git remote -v
- 增加远程仓库,并命名
git remote add [shortname] [url]
git remote add origin https://github.com/IfanTsai2/hello-git
- 将本地的提交推送到远程仓库
git push [remote] [branch]
git push origin master
- 将远程仓库的提交拉下到本地
git pull [remote] [branch]
换行
- CR:carring return 回车, 光标到首行, ‘r’ return
- LF:line feed 换行, 光标下移一行, ‘n’ newline
- linux: n windows: rn mac os: r
- 提交时转换为LF,检出时转换为CRLF,默认设置, 不用修改
git cofig --global core.autocrlf true
- 允许提交包含混合换行符的文件
git config --global core.safecrlf false
别名
- 以图形方式打印git提交日志
git log --pretty=format:'%h � | %s%d [%an]' --graph --date=short
- 设置别名
git config --global alias.ci commit
凭证
- 存储凭证
git config --global credential.helper store
协议
1.本地协议
2.Git协议 —— 缺乏受限机制, 一般与其他协议配合使用
3.HTTP协议 —— 通过输入用户名密码来授权对远程仓库的访问
4.SSH协议 (重点)
- 克隆远程仓库
- 完整写法
回撤
- 回撤暂存区内容到工作目录
git reset HEAD
- 回撤提交到暂存区
git reset HEAD --soft
- 回撤提交, 放弃变更
git reset HEAD --hard
- 回撤远程仓库, -f 即 –force (强制推送)
git push -f
- 回撤上一次提交
git add .
git commit --amend -m "message"
- 变基操作, 改写历史提交
git rebase -i HEAD~3
clean
- 列出打算清除的未跟踪的文件
git clean -n
- 真正的删除
git clean -f
- 连.gitignore中忽略的档案也清除
git clean -x -f
tag
- 在当前提交上, 打标签foo
git tag foo
- 在当前提交上, 打标签foo, 并给message信息注释
git tag foo -m "message"
- 在当前提交之前的第4个版本上, 打标签foo
git tag foo HEAD~4
- 列出所有标签
git tag
- 删除foo标签
git tag -d foo
- 把标签推送到远程仓库上
git push origin --tags
# 推送所有标签git push origin foo
# 推送foo标签 - 删除本地标签后删除远程仓库上的标签
git push origin :refs/tags/foo
分支
- 创建分支foo
git branch foo
- 切换到分支foo
git checkout foo
- 创建分支并同时切换到foo, 一步做到
git checkout -b foo
- 修改分支名字
git branch -m old_name new_name
- 删除分支foo
git branch -d foo
# 未与其他分支合并会删除失败git branch -D foo
# 强制删除, 即使未与其他分支合并 - 列出分支信息
git branch -v
- 列出远程分支
git branch -r
- 查看已合并的分支
git branch --merged
git branch --no-merged
- 列出远程合并的分支
git branch -r --merged
- 取出远程foo分支
git checkout -t origin/foo
- 删除远程分支
git push origin <space>:<remote branch>
git fetch -p
- 合并分支
git merge <branch name>
- 合并分支, 拒绝fat forward, 产生合并commit
git merge --no--ff
stash
- 保存进度
git stash
- 弹出进度
git stash pop
- 查看stash列表
git stash list
- 删除stash列表
git stash clear
git commit message格式
格式
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
type
- feat: 新功能
- fix: 修补bug
- docs: 文档
- style: 格式 (不影响代码运行的变动)
- refactor: 重构 (既不是新增功能, 也不是修改bug的代码变动)
- test: 增加测试
- chore: 构建过程或辅助工具的变动
参看阮一峰博客:Commit message 和 Change log 编写指南
本文作者: Ifan Tsai (菜菜)
本文链接: https://cloud.tencent.com/developer/article/2164562
版权声明: 本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!