常用命令
- git branch -a
- 查看所有分支
- git push origin --delete dev
- git删除远程分支
- git branch -d dev 删除本地分支
- git checkout -b xxx origin/xxx
- 从远程分支上创建一个新分支到本地,并自动追踪该分支
- 例:git checkout -b duweiwu/spots origin/release_5.32.0
- git push origin your_branch_name
- 把本地分支推送到远程仓库
- git branch -m feature/rescue_order
- 修改本地分支的名字
- git branch --set-upstream-to=origin/master
- 将当前分支追踪远程分支origin/master
- git branch --unset-upstream
- 取消本地分支追踪远程分支
- git branch -vv
- 查看本地分支和远程分支的跟踪关系
- git pull --rebase origin feature/insurance
- rebase方式更新远程分支内容
- 遇到冲突,打开文件解决冲突后,git add. git commit
- git rebase –continue
- (master)$ git merge –no-ff develop
- 将develop分支合并到master, 不采用快速合并,将会产生一个commitid
- git push -f
- 强制推送当前分支到远程仓库
- git switch -c dev 创建并切换到dev分支
- git branch -d 删除分支
- git stash pop/apply
- 设置全局的git用户名和邮箱
git config --global user.name "xxx" // 配置全局用户名,如Github上注册的用户名
git config --global user.email "yyy@mail.com" // 配置全局邮箱,如Github上配置的邮箱
- 清除全局的git用户名和邮箱
git config --global --unset user.name
git config --global --unset user.email
- 设置当前仓库的用户名和邮箱
git config user.name "liugui"
git config user.email "liugui@hust.edu.cn"
- 查看
git config --global user.name
git config --global user.email
所谓rebase
- rebase的目的让 master能够用fast forward的方式合并feature分支。
- 这里的base实际上指的是,当前分支是
基于远程(源)分支的哪次commitId的作出的修改(或者说是当前分支的后续commit是基于源分支的哪次commit),或者说是基于远程分支的哪次commId开始分叉(所谓分支就是分叉并行开发)。 - 而我们最终开发完成都是要把代码合并到源/远程分支上的,如果当前分支后续的修改(一次一次的commit)是
基于点仍然是源分支的最后一次commit点,那么源分支进行git merge xxx的时候可以采用fast forward模式,即将head指针,直接指向这次commit。 - 而rebase是指的是,将本地分支基于远程分支
- 如果本地分支基于源分支的最后一次作出的修改,那么git在merge的时候,
Fast forward选项是直接将master的指针指向要合并的分支的位置,合并之后,原始的分支中的所有信息都会被删除。
merge 不会产生记录 线并不区分是谁的分支,谁的线 提交也不分谁谁的分分支,只是一条提交记录 当本地分支落后源分支提交时,进行pull会自动生成一个commit记录,本分支的commit 会把远程分支的
rebase就是把你本地分支 整合成和源分支 一毛一样的,然后再将战存区文件恢复。 只有 以便能让 源分支 能够以fast forward 方式merge 本地分支,然后本地分支的记录将会被删掉。
而不rebase的话,将会生成一个新的本地分支合并源分支的commit记录,然后源分支和本地分支的head都指向它,以便能够再合并,但是此时会保留分支记录。
