常用命令
-
初始化一个仓库:
git init -
查看分支:
git branch -
将已修改或未跟踪的文件添加到暂存区:
git add [file]或git add . -
提交至本地仓库:
git commit -m"提及记录 xxxx" -
本地分支推送至远程分支:
git push -
查看当前工作目录和暂存区的状态:
git status -
查看提交的日志记录:
git log -
从远程分支拉取代码:
git pull -
合并某分支(xxx)到当前分支:
git merge xxx -
切换到分支 xxx:
git checkout xxx -
创建分支 xxx 并切换到该分支:
git checkout -b xxx -
删除分支 xxx:
git branch -d xxx -
将当前分支到改动保存到堆栈中:
git stash -
恢复堆栈中缓存的改动内容:
git stash popgit merge 和 git rebase 的区别?
相同点:
git merge和git rebase两个命令都⽤于从⼀个分⽀获取内容并合并到当前分⽀。不同点:
-
git merge会⾃动创建⼀个新的commit,如果合并时遇到冲突的话,只需要修改后重新commit。
-
优点:能记录真实的
commit情况,包括每个分⽀的详情 -
缺点:由于每次
merge会⾃动产⽣⼀个commit,因此在使用⼀些可视化的 git 工具时会看到这些自动产生的commit,这些commit对于程序员来说没有什么特别的意义,多了反而会影响阅读。
-
git rebase会合并之前的commit历史。
-
优点:可以得到更简洁的提交历史,去掉了 merge 产生的
commit -
缺点:因为合并而产生的代码问题,就不容易定位,因为会重写提交历史信息
场景:
-
当需要保留详细的合并信息,建议使⽤
git merge, 尤其是要合并到master上 -
当发现⾃⼰修改某个功能时提交比较频繁,并觉得过多的合并记录信息对自己来说没有必要,那么可尝试使用
git rebase
对 GitFlow 的理解?
GitFlow 重点解决的是由于源代码在开发过程中的各种冲突导致开发活动混乱的问题。重点是对各个分支的理解。
-
master:主分支。 -
develop:主开发分支,平行于master分支。 -
feature:功能分支,必须从develop分支建立,开发完成后合并到develop分支。 -
release:发布分支,发布的时候用,一般测试时候发现的 bug 在该分支进行修复。从develop分支建立,完成后合并回develop与master分支。 -
hotfix:紧急修复线上 bug 使用,必须从master分支建立,完成后合并回develop与master分支。
-