git fetch
获取远程仓库内容,但未合入本地仓库;
git rebase
获取远程仓库内容,并更改基地合入本地仓库;
将master分支的内容合入feature分支:
当在feature分支上执行git rebase master时,git会从master和featuer的共同祖先B开始提取feature分支上的修改,也就是C和D两个提交,先提取到;
然后将feature分支指向master分支的最新提交上,也就是M;
最后把提取的C和D连接到指向M后面;
基底变更:feature分支是基于master分支的B拉出来的分支,feature的基底是B。而master在B之后有新的提交,就相当于此时要用master上新的提交来作为feature分支的新基底。
git rebase --continue
在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后执行“git rebase --continue”
git rebase --abort
在任何时候,你可以用–abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态
git merge:
git merge的三种形式
git merge会创建新节点提交
git rebase和git merge区别
最主要的区别就是git rebase不会创建新节点,且历史记录清晰,但会更改基底。
git pull
git pull:git fetch + get merge的组合,用远程仓库代码更新本地仓库的代码,非线性合并
git pull --rebase:git fetch + get rebase的组合,用远程仓库代码更新本地仓库的代码,线性合并
git push
git push origin HEAD:refs/for/远程分支
git log
git log --pretty=“%h %cd %an ==>%s” . //获取当前目录提交记录
git chery-pick
解决cherry pick冲突:存在冲突,先本地更改—>git add --> git cherry-pick --continue
取消cherry pick : git cherry-pick --abort
git reset
回退到某个logid:git reset --hard commit-id
回退git add :git reset
回退git commit:git reset --soft HEAD^
git apply
git diff > diff.patch
git apply --check patchfile
git apply patchfile