本文共 3309 字,大约阅读时间需要 11 分钟。
概况:2005年Linux之父Linus两周时间用C语言开发。目前,最先进的分布式版本控制系统。
优势:①速度快;②完全分布式;③轻量级;④社区成熟活跃。
与传统VCS工具的对比
(1)基础知识-第一次COMMIT
(2)基础知识-多次COMMIT
(3)基础知识--分支
(4)基础知识--标签(TAG)
(5)基础知识--区域划分
编号 | 场景 | 命令 |
1 | 本地丢弃工作区修改 | git checkout--<file> |
2 | 将修改从暂存区回退到工作区 | git reset HEAD<file> git reset HEAD .//所有文件 |
3 | push之前,撤销某一次commit | git reset commit-id //撤销此次commit修改还在 git reset --hard commit-id //撤销后放弃此次commit的修改 |
4 | 停止追踪文件 | git rm --cached <file> //解除被追踪状态,但是工作目录中还会保存文件 git rm <file>-f //解除被追踪状态并且在工作目录中删除该文件 |
5 | push之后回退 | git revert commit-id //只撤销某次操作,不影响之前和之后的 commit,revert会把撤销作为新的commit提交,版本会递增 git reset commit-id //撤销某次提交,此后的修改都会被回退到暂存区。 三种模式: --hard彻底撤销,不保留修改。暂存区和工作目录都会重置到你指定的提交; --mixed回退版本库,暂存区。工作目录不会被改变; --soft只撤销commit,暂存区和工作目录都不会被改变。例:git reset--hard commit-id |
6 | 分支管理 | git checkout-b hotfix //从当前分支创建hotfix分支,并切换到hotfix分支 git checkout-b hotfix master //从master分支创建hotfix分支,并切换到hotfix分支 git branch //查看所有的分支,带*号的是当前所在分支 git branch-d hotfix //删除hotfix分支 git branch-D hotfix //强制删除hotfix分支 git branch--merged //查看与当前分支合并过的分支,只要合并过的分支即使删掉也不用担心; git branch--no-merged //查看与当前分支合并过的分支,只要合并过的分支即使删掉也不用担心 git branch--no-merged //查看与当前分支没有合并过的分支 |
7 | 分支合并 | git merge hotfix //合并hotfix分支到当前分支,使当前分支拥有hotfix分支的改动 git merege origin/master //合并远程的master分支到当前分支 |
8 | 冲突解决
| git diff //查看暂存区和工作区的文件差异 <<<<<<<当前分支之前的本地文件内容========远程仓库的内容========>>>>>>> 对上述内容进行判断,人工判断需要保留的代码,删除多余的<<<<<<<和======即可 git add .//将解决冲突后的文件提交到暂存区 git commit-m '解决冲突'
|
9 | 合并某个commit到其他分支 | git cherry-pick commit-id1 commit-id2 //合并commit-id1和commit-id2到当前分支,自动commit git cherry-pick -n commit-id1 commit-id2 //合并commit-id1和commit-id2到当前分支,不自动commit |
10 | 储存区操作 | git stash save 'my-stash' //添加当前暂存区和工作区的内容到储存区,并为储藏添加标记。执行以后暂存区和工作区会恢复到修改前的状态 git stash list //查看储存区的内容列表 git stash show stash@{0} //查看id为0的储藏详情 git stash pop stash@{0} //将id为0 的储藏恢复到工作区。如果恢复以后没有冲突,储藏将被删除 git stash apply stash@{0} //将id为0的储藏恢复到工作区。如果储藏将不会被删除 git stash drop stash@{0} //删除id为0 的储藏 git stash clear //删除所有储藏
|
11 | 本地更新remote仓库的信息 | git fetch |
12 | 日志查看 | git log git log --oneline //将每条日志输出为一行(只显示哈希值和提交说明) git log -2 //显示2条日志 git log --author Tom //只查看Tom的提交记录 git log-p-checkout.js //只查看checkout.js的提交日志 git log --since=2.weeks //只查看2周内的提交记录 git log --after="2018-11-01"-before"2018-11-02" //查看2018-11-01到2018-11-02d的日志 git log --pretty=format:"%h-%an,%ar:%s" //格式化日志内容。查看简写comit-id,作者,提交日期及提交说明 git log --graph //查看带点线图的日志 |
13 | 帮助命令 |
(1)MERGE(合并)
(1)中心化工作流
(2)基于功能分支的工作流
(3)GITFOLW工作流
master发布历史分支。可以打Tag develop开发分支。功能分布发父分支,用于整合功能分支release branches发布分支hotfixes紧急修复分支(维护分支)。
(4)Fork工作流
参见Github
(1)rebase和merge的区别
Git社区图书中文版
(2)rebase和merge的区别
Git教程
git remote prune origin,该命令可以删除本地版本上那些失效的远程追踪分支,具体用法是,假如你的远程版本库名是origin,则使用如下命令先查看哪些分支需要清理:
git remote prune origin--dry--run
git--everything-是本地
常用Git命令清单
Git教程
学习Git分支
Git菜单
转载地址:http://olcnn.baihongyu.com/