创建分支
- git branch new-branch
创建分支的同时切换到新建的分支
- git checkout -b new-branch
在其他分支的基础上新建分支,且不带之前分支的commit信息
- git checkout --orphan new-branch
第一次将本地分支(dev)推送到远程分支(dev)
- git push origin dev:dev
提交本地分支(dev)到远程分支(origin/dev)
- git push origin dev
将本地分支( dev )合并到远程分支(origin/master)
-
git checkout master;
-
git merge dev
-
git push origin master
Tip: git merge --squash dev --squash这个参数的作用是,可以将dev之前commit的记录整合到一个,这样合并的log就会只有最后一个commit的信息
将本地某次提交合并到远程分支(origin/master)
-
git log 查看某次提交的commit-id
-
git checkout master
-
git cherry-pick commit-id
-
git commit -m "add msg"
-
git push origin master
-
git pull (相当于git fetch+git merge)
git fetch 将远程分支最新修改拉取下来
删除本地分支
- git branch -d branch-name
- git branch -D branch-name (强行删除本地分支)
删除远程分支
- git push origin --delete branch-name
合并多个commit
举例:合并最后2次提交的commit:
-
先回退到最后2次提交的前一次提交
git rebase -i HEAD~3 或 git rebase -i commit-id (commit-id:倒数第3次commit的commit-id)
-
选择第3个commit-id中的一个作为最终需要保留的commit-id
并将剩下两个提交的pick---更改为squash(简写s)也可以,保存退出(:wq)如果需要删除某次提交,直接将pick--更改为 drop即可
需要提交到远程代码的话,还需要执行:git push origin master -f -
进入到提交msg界面,看是否需要更改提交的msg,如果没有直接保存退出
如果有,按i进入编辑模式,修改相应的msg,按esc退出编辑模式,再保存退出。
注意:如果整个操作有出现错误,可以使用: git rebase --abort(放弃本次rebase操作)
同理cherry-pick出错,可使用:git cherry-pick --abort
当前所在分支有更改,未提交到缓存区,但是需要切换到其它分支:
- git stash [save message] 备份当前的工作区的内容 [当前内容的备注信息]
切换在缓存区中最新的一次记录
-
git stash pop 弹出最后一次stash的提交,代码恢复到该次提交的状态
-
git reset --soft commit-id (软重置,新提交的文件会被保存)
-
git reset --hard commint-id (硬重置,新修改的数据都会被清掉,包括stash暂存区的)