以下是对上述材料的补充
1,git add 与 git commit 的区别
一、Git工作流程
git add 将文件提交到缓存区,所有的修改从缓存区存储,在一次性commit到本地仓库,暂缓区主要为过度的一个区间
git add . | 添加当前目录的所有文件到暂存区 |
---|---|
git add [dir] | 添加指定目录到暂存区,包括子目录 |
git add [file1] | 添加指定文件到暂存区 |
2,创建分支
git branch列出所有本地分支
git branch -r列出所有远程分支
git branch -a列出所有本地分支和远程分支
git branch [branch-name]新建一个分支,但依然停留在当前分支
git checkout -b [branch-name]新建一个分支,并切换到该分支
git branch --track [branch][remote-branch]新建一个分支,与指定的远程分支建立追踪关系
git checkout [branch-name]切换到指定分支,并更新工作区
git branch -d [branch-name]删除分支
git push origin --delete [branch-name]删除远程分支
3,merger
git fetch [remote] | merge之前先拉一下远程仓库最新代码 |
---|---|
git merge [branch] | 合并指定分支到当前分支
|
4,rabse 衍合和merger区别
merger 是将某一分支合并到当前分只,例如 在master上合并dev, git merger dev ,dev 分支不变,会将Dev分支上的内后合并到mastr,还是两个分支,rabase则是将两个分支合并,比如在master上执行git rabase dev ,会在 master上合并dev,并删除dev.
5.reset和revert区别
git reset —soft [commit]只改变提交点,暂存区和工作目录的内容都不改变
git reset —mixed [commit]改变提交点,同时改变暂存区的内容
git reset —hard [commit]暂存区、工作区的内容都会被修改到与提交点完全一致的状态
git reset --hard HEAD让工作区回到上次提交时的状态
不同点
1,reset 会删除commit,如果线上已经push,可能会出冲突,revert,会重新提交一个commit,不会冲突
2,reset会出现在历史分支,而reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.
3,reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.
git status | 显示有变更的文件 |
---|---|
git log | 显示当前分支的版本历史 |
git diff | 显示暂存区和工作区的差异 |
git diff HEAD | 显示工作区与当前分支最新commit之间的差异 |
git cherry-pick [commit] | 选择一个commit,合并进当前分支 |
修改远程分支
git remote set-url url
查看提交记录
git logs -4 --stat 查看前四条,这个不能看到reset后的提交
git reflog 查看所有的提交