编写: zhangyue 时间: 2017-02-23 说明: git的一些命令使用
1 merge和rebase的区别
merge:合并两个分支,根据两个分支的同一个起点,同相同起点开始,把两个分支的修改进行合并,之后生成生成一个commit。
rebase:合并两个分支,抽取出当前的分支的commit, 之后合并目标分支commit,再将置顶抽出的commit重新合并入当前分支的commit
2 两者合并的示意图
merge: master: master:1 -- master:2 | dev : |-- dev:1 --- dev:2 执行git merge master dev的log: dev : master:1 --> dev:1 --> dev:2 --> master:2 --> merge commit rebase: master: master:1 -- master:2 | dev : |-- dev:1 -- dev:2 执行git rebase master dev的log: dev : master:1 --> master:2 --> dev:1 --> dev:2
3 在发生冲突时两者的不同处理方式
merge: 有冲突->停止合并->手动解决后->再次merge
rebase:有冲突->暂停操作->手动解决,
git rebase --continue继续(--skip跳过/--abort 停止rebase操作)
4 rebase对commit的操作
git rebase -i HEAD~3 对所做的提交进行修改 # Commands: # p, pick = use commit 不做任何修改 # r, reword = use commit, but edit the commit message 只修改提交注释信息 # e, edit = use commit, but stop for amending 修改提交的文件,做增补提交 # s, squash = use commit, but meld into previous commit 将该条提交合并到上一条提交,提交注释也一并合并 # f, fixup = like "squash", but discard this commit's log message 将该条提交合并到上一条提交,废弃该条提交的注释 # x, exec = run command (the rest of the line) using shell # d, drop = remove commit 删除某次提交
5 其他的一些功能命令
git cherry-pick取某一个分支中的一个或几个commit(s)来进行合并 git stash [pop/apply /drop/save] 将改动存入暂存区[弹出暂存区记录/恢复一个暂存区内记录] git blame 文件逐行追溯 git clean 清除工作区未跟踪文件