diff --git a/tools/git.txt b/tools/git.txt new file mode 100644 index 0000000..201b40a --- /dev/null +++ b/tools/git.txt @@ -0,0 +1,212 @@ +############################################################################## +# GIT CHEATSHEET (中文速查表) - by albertwang21 (created on 2019/09/16) +# Version: 1, Last Modified: 2019/09/16 18:00 +# https://github.com/skywind3000/awesome-cheatsheets +############################################################################## + + +############################################################################## +# 配置 +############################################################################## +git config --global "Your Name" +git config --global "Email Address" + + +############################################################################## +# 初始化 +############################################################################## +git init + + +############################################################################## +# 提交修改 +############################################################################## +git add +git commit -m "descriptions" + + +############################################################################## +# 查看状态、比对 +############################################################################## +git status +git diff +git diff HEAD -- 查看工作区和版本库里面最新版本的区别 + + +############################################################################## +# 查看历史版本、历史操作 +############################################################################## +git log +git reflog + + +############################################################################## +# 版本回退、前进 +############################################################################## +git reset --hard HEAD^ 回退到上1版本 +git reset --hard HEAD~5 回退到上5个版本 +git reset --hard id 回退到指定版本 + + +############################################################################## +# 撤销修改 +############################################################################## +git checkout -- 撤销修改:误修改工作区文件,未git add/commit +git restore 撤销修改:误修改工作区文件,未git add/commit +git reset HEAD 撤销git add:误将文件加入暂存区(git add),未git commit +git reset --hard HEAD^ 撤销git commit:误将文件提交(一旦提交,只能通过版本回退进行撤销) + + +############################################################################## +# 删除与恢复 +############################################################################## +git rm/add +git commit -m "remove " 删除版本库中的:删除工作区文件后,继续删除版本库中相应的文件 +git checkout -- 根据版本库中的恢复工作区 + + +############################################################################## +# 关联GitHub远程仓库(本地到远程) +############################################################################## +git remote add origin 在本地工作区目录下按照 GitHub 提示进行关联 +git remote rm origin 解除错误关联 +git push -u origin master 第一次将本地仓库推送至远程仓库(每次在本地提交后进行操作) +git push origin master 以后每次将本地仓库推送至远程仓库(每次在本地提交后进行操作) +: + git@github.com:/.git + https://github.com//.git + + +############################################################################## +# 克隆GitHub远程仓库(远程到本地) +############################################################################## +git clone git协议速度更快但通常公司内网不允许,https协议速度慢 + + +############################################################################## +# 分支管理:创建、切换、查看、合并、删除 +############################################################################## +git branch 创建分支 +git checkout 切换至分支 +git switch 切换至分支 +git checkout -b 创建并切换至分支 +git switch -c 创建并切换至分支 +git branch 查看已有分支(* 表示当前分支) +git merge 合并到当前分支(通常在master分支下操作) +git branch -d 删除分支 + + +############################################################################## +# 解决合并冲突 +############################################################################## +合并时报错“分支发生冲突”,首先vim相应文件,修改冲突位置,然后按照git add/commit重新提交,最后删除多余分支即可。 +git log --graph --pretty=oneline --abbrev-commit +git log --graph + + +############################################################################## +# 分支管理:合并后删除分支也在 log 中保留分支记录 +############################################################################## +git merge --no-ff -m "descriptions" + + +############################################################################## +# 开发流程: +############################################################################## +master分支 发布稳定版本 +dev分支 发布开发版本 +分支 个人开发分支(个人开发完成将该分支并入dev,同时保留该分支,继续开发) + + +############################################################################## +# Bug分支管理(建立单独分支进行bug修复) +############################################################################## +软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。 +git stash 保存当前工作现场(在dev未完成开发,但master有bug需要修复) +git stash pop 回到dev分支后恢复工作现场(list中的现场会同时被删除) +git stash list 查看当前存储的工作现场 +git stash apply stash@{#} 回到指定工作现场(list中的现场不会被删除,需要用git stash drop) +git stash drop stash@{#} 删除指定工作现场 +git cherry-pick 在master修复好bug后,在dev复制一遍bug修复流程 + + +############################################################################## +# Feature分支管理(建立单独分支添加新功能) +############################################################################## +软件开发中,总有无穷无尽的新的功能要不断添加进来。添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。 +git branch -D 强制删除分支(丢弃未合并分支) + + +############################################################################## +# 协作与分支推送 +############################################################################## +User 1: +git remote [-v] 查看远程库信息(-v 查看详细信息) +git push origin [master/dev/...] 推送指定分支到远程 +User 2: +git clone 克隆到本地(只能克隆master) +git checkout -b dev origin/dev 本地新建分支并关联远程 +git add/commit/push 添加、提交、推送更新 +User 1: +git add/commit/push 推送时报错(与user 2推送的更新冲突) +git pull +git branch --set-upstream-to=origin/ 本地与远程关联 +git pull 拉取远程文件(并解决冲突) +git commit/push 重新提交并推送 + + +############################################################################## +# 标签管理(常用于版本管理):查看、创建、操作 +############################################################################## +git tag 查看标签 +git show 查看指定标签 +git log --pretty=oneline --abbrev-commit --decorate=full 在log中显示标签 +git tag 为上次commit位置打标签 +git tag 为指定commit位置打标签 +git tag -a -m "descriptions" 为指定commit打标并添加描述 +git tag -d 删除本地标签 +git push origin 推送指定标签到远程 +git push origin --tags 推送所有本地标签到远程 +git push origin :refs/tags/ 删除远程标签(先删除本地标签) + + +############################################################################## +# 使用GitHub +############################################################################## +fork --> clone --> add/commit/push --> pull request + + +############################################################################## +# 其他配置 +############################################################################## +git config --global color.ui true 显示颜色 + + +############################################################################## +# 配置.gitignore文件 +############################################################################## +// 忽略文件夹 +*.zip 忽略.zip文件 +// 忽略指定文件 + + +############################################################################## +# 文件.gitignore生效后 +############################################################################## +git add -f 强制添加 +git check-ignore -v 查看生效规则 + + +############################################################################## +# 配置别名 +############################################################################## +git config [--global] alias. '' 为所有工作区/当前工作区配置别名 +.git/config 当前工作区的配置文件 +~/.gitconfig 当前用户的配置文件 + + +############################################################################## +# References +############################################################################## +https://www.liaoxuefeng.com/wiki/896043488029600 +