git常见操作

新建分支并且切换过去

git checkout -b <branchName>

合并分支

git merge <branchName>
将[branchName] 对应的分支内容,合并到当前head指向的分支

合并的区别

  1. Fast-forward
    image
    即,合并分支和原分支在同一路径上,不会发生冲突,只用将分支指针指向合并分支即可

image
两个分支不在同一路径上,即可能需要解决冲突,此时,会新建一个提交来完成此次合并
image
在这种情况下,仍有两种情况需要讨论

  • 两个分支无冲突,则会直接将head指向的分支改为指向合并的指针指向的commit
  • 两个分支有冲突,则解决完冲突文件后再手动提交

删除分支

git branch -d <branchName>

将本地分支推送到远程仓库

git push <originName> <remoteBranch>/<localBranch>

git push origin master
即为 git push origin master:master 的简写

更新远程分支

git fetch <originName>/<branchName>
git merge <originName>/<branchName>
或者
git pull <originName>/<branchName>

有一个很重要的思想
要把远程分支当成一个特殊的分支去对待就行

跟踪远程分支

新建一个本地分支跟踪远程分支

  • git checkout --track <branchName> <originName>/<branchName>
  • git checkout -b <branchName> <originName>/<branchName>
    使用已有分支跟踪远程分支
  • git branch -u <originName>/<branchName>
  • git push --set-upstream <originName>/<branchName>

更新远程分支,并查看其信息

git fetch --all; git branch -vv

合并时忽略空白

变基合并

git checkout experiment
git rebase master
或者 git rebase experiment master
变基合并会将合并入的分支的提交一个个合并,并生成commit,可能要手动解决好几次冲突问题
但是变基合并可以让分支变得更加简洁,而且推送到远程仓库后其他用户拉去后可以直接fast-forward 合并
image
image
image

将两个分支的分叉处后面的提交合并到某个分支中

git rebase --onto master server client

以上命令的意思是:“取出 client 分支,找出处于 client 分支和 server 分支的共同祖先之后的修改,然 后把它们在 master 分支上重演一遍”。 这理解起来有一点复杂,不过效果非常酷。
image

posted @ 2022-01-02 23:04  竹林取剑  阅读(35)  评论(0编辑  收藏  举报