1、基础知识
每次commit都会生成一个节点,而每个节点都会有一个哈希值作为唯一标示,多次提交会形成一个线性节点链;
head是指针,可以指向任意一个commit节点,并且指向的节点始终为当前工作目录;
branch也是指针,在某个节点创建一个分支后,并不会把该节点对应的代码复制一份出来,只是将新分支指向该节点;
2、提交相关操作
git add .
git commit --amend -s -m "my first commit"?
git fetch 远程仓库地址/分支名,把远程新增的节点和引用状态下载到本地
git pull <远程分支名>,其实是 fetch+merge
git pull --rebase <远程分支名>,其实是 rebase+merge
git push -f origin master:master
3、合并相关操作
多人同时修改了同一个文件的同一行代码,则需要手动合并代码
git merge <分支名>或<节点hash值> 会产生新的commit节点;
git rebase <分支名>或<节点hash值> 不会产生新的commit节点,使得开发流程更加线性;
git cherry-pick <节点hash值> 把commit节点抓过来放在后边
4、撤销相关操作
git log 查看所有的commit提交记录;
git show 查看提交的详情
git checkout <节点hash值> 把head指向对应节点
git checkout HEAD^ 把head指向前一个节点
git checkout ~2 把head指向前2个节点
发现之前提的代码有问题,则可以先把head指向之前的节点,再--amend提交
重置commit:
命令:git reset HEAD~2把本地仓库的commit节点回退到前两个的commit节点,默认是--mixed,还有--softed和--hard;
git reset之后需要git push -f origin comp_crontask01:comp_crontask01
IDE: Reset Cerrent Branch to Here
回滚中间commit:
命令:git revert <commit id>
git revert 之后需要git push -f origin comp_crontask01:comp_crontask01
IDE: Revert Commit
合并多个commit:
命令:git rebase -i HEAD~2
git rebase之后需要git push -f origin comp_crontask01:comp_crontask01
IDE: 选中一个执行Interactively Rebase from Here, 需要 ctrl+enter 或者
选中多个执行Squash Commits
参考git如何合并多个commit_海棠睿睿的博
5、分支相关操作
git branch 查看本地分支
git checkout <分支名> 切换分支
git branch -a 查看远程分支
git checkout -t origin/st 切换到远程分支
git branch -d <分支名> 删除分支