git

说明:
- workspace:工作区
- staging area:暂存区
- local repository:本地仓库
- remote reposiory:远程仓库
git pull
git pull是用于从远程仓库拉去最新代码并合并到本地分支,它本质是两个命令的组合:git fetch和git merge。
git fetch用于从远程仓库拉去最新代码,但不会修改你的当前工作区代码 git merge将下载下来的远程分支代码合并到本地分支。 git pull命令的执行顺序是:git fetch -> git merge。 如果合并过程中出现冲突,用户需要手动解决冲突,然后提交合并后的代码。 如果合并过程中没有冲突,用户直接提交合并后的代码。
冲突处理
当本地修改与远程代码修改了同一文件的相同位置时,会触发冲突。 用户需要手动解决冲突,寻找 <<<<<<<、======= 和 >>>>>>> 标记,手动删改代码并保存
git merge git rebase
git merge
创建一个新的合并提交,将两个历史连接在一起
假设你从main分支切出feature分支,此时main上也有了新的提交
plaintext
C3---C4 (feature)
/
C1---C2---C5 (main)执行git merge main(在feature分支),git会找到C4和C5的公共祖先C2,然后创建一个新的合并提交C6,将C4和C5连接在一起。
plaintext
C3---C4------\
/ v
C1---C2-------C5---C6 (feature / main 合并点)git rebase
把当前分支的提交依次摘下,重新在目标分支的顶部重放
执行git rebase main(在feature分支)
git会把C3、C4临时保存为补丁,将feature指针指向C5,然后依次重新应用C3、C4
plaintext
C1---C2---C5---C3'---C4' (feature 变基到了 main 顶部)分支管理
创建新分支并切换到该分支
bash
git checkout -b <branch-name>查看所有分支
bash
git branch查看远程分支
bash
git branch -r合并分支
bash
git merge <branch-name>删除分支
bash
git branch -d <branch-name>删除远程分支
bash
git push origin --delete <branch-name>reset
本地未推送的提交,撤销提交保留修改
bash
git reset --soft HEAD~1如果已经git push到远程仓库,不要使用reset
bash
git revert HEAD- 生成一个新的提交,内容正好是撤销最近一次提交的改动