Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
基本工作流程
Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull
说明:
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:本地仓库
- remote repository:远程仓库
分支操作:
命令 | 操作 |
---|
git branch <name> | 创建分支 |
git checkout -b <name> | 创建并切换到新建的分支上 |
git checkout <name> | 切换分支 |
git branch | 查看分支列表 |
git branch -v | 查看分支列表,并展示分支的最后一次commit记录 |
git branch -vv | 查看分支列表,并展示对应的远程分支,以及最后的一次commit记录 |
git brabch -b <name> | 创建远程分支到本地 |
git branch --merged | 查看哪些分支已经合并到当前分支 |
git branch --no-merged | 查看未与当前分支合并的分支 |
git branch -d <name> | 删除本地分支 |
git branch -D <name> | 强行删除分支 |
git push origin --delete <name> | 删除远程仓库分支 |
git merge <name> | 合并分支到当前分支上 |
git merge [name] --squash | 将name合并到当前分支,并将name上的所有提交合并成一次提交 |
git push origin <name> | 本地分支推到远程分支,与git push的区别在于:当你关联了两个多个仓库或有多个分支时用。 |
暂存操作:
命令 | 操作 |
---|
git stash | 暂存当前修改 |
git stash apply | 恢复最近的一次暂存 |
git stash pop | 恢复暂存并删除暂存记录 |
git stash list | 查看暂存列表 |
git stash drop 暂存名(例:stash@{0}) | 移除某次暂存 |
git stash clear | 清除暂存 |
回退操作:
命令 | 操作 |
---|
git reset --hard HEAD^ | 回退到上一个版本 |
git reset --hard (commit_id) | 回退到某个版本(本地分支) |
git checkout – file | 撤销修改的文件(如果文件加入到了暂存区,则回退到暂存区的,如果文件加入到了版本库,则还原至加入版本库之后的状态) |
git reset HEAD file | 撤回暂存区的文件修改到工作区 |
标签操作:
命令 | 操作 |
---|
git tag 标签名 | 添加标签(默认对当前版本) |
git tag 标签名 commit_id | 对某一提交记录打标签 |
git tag -a 标签名 -m ‘描述’ | 创建新标签并增加备注 |
git tag | 列出所有标签列表 |
git show 标签名 | 查看标签信息 |
git tag -d 标签名 | 删除本地标签 |
git push origin 标签名 | 推送标签到远程仓库 |
git push origin --tags | 推送所有标签到远程仓库 |
git push origin :refs/tags/标签名 | 从远程仓库中删除标签 |
常规操作:
命令 | 操作 |
---|
git push origin test | 推送本地分支到远程仓库 |
git rm -r --cached 文件/文件夹名字 | 取消文件被版本控制 |
git reflog | 获取执行过的命令 |
git log --graph | 查看分支合并图 |
git merge --no-ff -m ‘合并描述’ 分支名 | 不使用Fast forward方式合并,采用这种方式合并可以看到合并记录 |
git check-ignore -v 文件名 | 查看忽略规则 |
git add -f 文件名 | 强制将文件提交 |
git创建项目仓库:
命令 | 操作 |
---|
git init | 初始化 |
git remote add origin url | 关联远程仓库 |
git pull | |
git fetch | 获取远程仓库中所有的分支到本地 |
忽略已加入到版本库中的文件:
命令 | 操作 |
---|
git update-index --assume-unchanged file | 忽略单个文件 |
git rm -r --cached 文件/文件夹名字 | (. 忽略全部文件) |
取消忽略文件:
git update-index --no-assume-unchanged file
拉取、上传免密码:
git config --global credential.helper store
删除远程文件(不删除本地文件)
git rm -r --cached [file]
git commit -m ""
git push
本地项目推送至远程
git init
git remote add origin [url]
git add .
git commit -m ""
git push --set-upstream origin master
pull 或者 merge 的时候错误 fatal: refusing to merge unrelated histories
原因:本地与远程具有不同的提交历史
git pull origin master --allow-unrelated-histories
git merge master --allow-unrelated-histories
pull的时候 error: Your local changes to the following files would be overwritten by merge
忽略本地修改,强制拉取远程覆盖本地
git fetch --all
git reset --hard origin/dev
git pull
回退版本
git reset --hard <commit_id>
git push origin --delete <name>
git push
修改commit msg
git commit --amend
修改远程仓库地址
git remote -v
git remote rm origin
git remote add origin [仓库地址]
git remote set-url origin [仓库地址]
提交规范
提交前缀
feat: 增加新功能
fix: 修复bug
docs: 只改动了文档相关的内容
style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
build: 构造工具的或者外部依赖的改动,例如webpack,npm
refactor: 代码重构时使用
revert: 执行git revert打印的message
test: 添加测试或者修改现有测试
perf: 提高性能的改动
ci: 与CI(持续集成服务)有关的改动
chore: 不修改src或者test的其余修改,例如构建过程或辅助工具的变动