关联本地分支和远程分支
- 关联已存在的本地分支和远程分支
-
git branch --set-upstream dev origin/dev
- 本地创建分支,上传到远程仓库,并关联,如远程分支不存在,会自动创建
-
git push -u origin devgit push --set-upstream origin dev
- 抓取远程分支并在本地创建关联的本地分支
-
git checkout -b local-branchname origin/remote_branchname
git reset(撤销本地仓库 的 commit)
git reset HEAD^
git reset [--soft | --mixed | --hard] [HEAD | <commit id>]
--mixed回退到工作区(default)--soft回退到暂存区--hard删除更改
git reset 只是改变了本地的 HEAD,远程并没有变更,使用 git push -f 强行推送到远程。
强行推送后,HEAD 指针后的 commit 都会删除。
恢复
git reflog(查看命令历史),找到对应的<commit id>git reset --hard <commit id>
HEAD 说明
HEAD代表当前版本HEAD^代表上个版本Head^^代表上上版本HEAD~100代表往上100个版本
git revert
git revert <commit-id>:重做<commit-id>
git revert -n <commit-idA>..<commit-idB>:重做<commit-idA>到<commit-idB>之间的所有commit
-n/--no-commit不会自动生成新的提交,通常在做多个 commit 操作时,需要用到。-m重做 merge 类型的 commit
git reset 与 git revert 的区别

git merge 和 git rebase 的区别
git cherry-pick
git cherry-pick <commitId> "复制"一个提交节点并在当前分支做一次完全一样的新提交。
删除分支
- 删除本地分支
-
git branch -d <branch name>git branch -D <branch name>强行删除分支
- 删除远程分支
-
git push origin :<branch name>
git branch
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
git branch -a
# 查看本地仓库与远程仓库的关联情况
git branch -vv
git stash
# 暂时保存没有提交的工作
# 运行该命令后,所有没有commit的代码,都会暂时从工作区移除,回到上次commit时的状态。
git stash
# 添加备注
git stash save "message"
# 查看所有保存的工作现场。
git stash list
# 恢复最后保存的工作现场并同时删除。
git stash pop
# 恢复保存的工作现场,不会从存储列表中删除。
git stash apply [工作现场名称]
# 删除工作现场。
git stash drop [工作现场名称]
# 删除所有缓存的 stash
git stash clear
git 配置命令
# 列出全部配置
git config --list
# 列出全局配置
git config --global --list
# 列出系统配置
git config --system --list
# 列出 Repository 配置
git config --local --list
# 配置用户名、邮箱
git config --global user.name "your name"
git config --global user.email "youremail@github.com"
git alias 配置
# 给 git status 设置别名 st
git config --global alias.st "status"
# git st === git status
# 列出全局配置并展示来源
git config --global --list --show-origin
[alias]
st = status -sb
co = checkout
br = branch
mg = merge
cm = commit -am
ds = diff --staged
dt = difftool
mt = mergetool
last = log -1 HEAD
latest = for-each-ref --sort=-committerdate --format="%(committername)@%(refname:short) [%(committerdate:short)] %(contents)"
ls = log --pretty=format:"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]" --decorate --date=short
hist = log --pretty=format:"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad" --topo-order --graph --date=short
type = cat-file -t
dump = cat-file -p
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
git 概念
- Workspace:工作区
- Index:暂存区
- Repository:本地仓库
- Remote:远程仓库
Commit 提交规范
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
type
- feat: 新功能
- fix: 修复问题
- docs: 修改文档
- style: 修改代码格式,不影响代码逻辑
- refactor: 重构代码,理论上不影响现有功能
- perf: 提升性能
- test: 增加修改测试用例
- chore: 修改工具相关(包括但不限于文档、代码生成等)
- deps: 升级依赖