携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天
一,数据准备,创建项目 编辑
二,分支操作
1,创建分支
1.1 命令行操作
git branch 查看分支
git branch 分支名 创建分支
git checkout 分支名 切换分支
git checkout -b 分支名 创建+切换分支
git merge 分支名 合并某分支到当前分支
git branch -d 分支名 删除分支
git push -u origin 分支名 推送当前分支到远程的某分支
1.2 IDEA 操作
以下操作相当于创建test分支并切换当前分支为test,然后将主分支合并到test
编辑
编辑
编辑
2,删除分支
删除分支可删除本地的分支和远程的分支(需要权限),需要注意的是当前所在分支不能删除。
2.1命令行删除分支
git branch -d 分支名 删除本地分支
git push origin --delete 分支名 删除远程分支
2.2IDEA删除分支
删除本地分支
编辑
删除远程分支
编辑
勾选之后连带删除本地分支编辑
3,合同多次本地仓库提交为一次(解决提及数据乱问题)
3.1命令行合并多次提交
需要注意的是操作要在未提交远程之前
//这个往上的将会被合并,本身不受影响
git reset --hard commitid
git merge --squash HEAD@{1}
git commit -m "feature B complete"
IDEA合并多次多次提交
选中要合并的提交项目
编辑
重新起名
编辑
编辑
或者把提交记录合并到上一次
编辑
4,重命名提交信息
4.1命令行重命名
输入:
git rebase -i HEAD~2
最后的数字2指的是显示到倒数第几次 比如这个输入的2就会显示倒数的两次注释(最上面两行)
显示倒数两次的commit注释.png
你想修改哪条注释 就把哪条注释前面的pick换成edit。方法就是上面说的编辑方式:i---编辑,把pick换成edit---Esc---:wq.
然后:(接下来的步骤Terminal会提示)
git commit --amend
修改注释,保存并退出后,输入:
git rebase --continue
4.2IDEA重命名
编辑
5,合并分支
5.1命令行合并分支
合并 master分支到test分支
全部合并
切换到当前分支为test
git checkout test
合并主分支到test
git merge master
部分合并
git log //查看提交的日志,复制要合并的那个分支的commit id
git checkout 要合并的分支 // 切换到要合并的分支上
git cherry-pick 上面复制的那个要合并的commit id // 提交该commit到当前分支
5.2IDEA合并分支
切换分支到test
编辑
全部合并
编辑
部分合并
编辑
6,删除某次提交,版本回退
6.1命令行
git reset --mixed HEAD~ 返回上一个快照(mixed为默认,一下不写)
git reset HEAD~~ 返回上上一个快照(以此类推)
git reset HEAD~10 防止错误支持数字(此处相当于10个~)
调用git reset --mixed HEAD~之后实际上它影响了两颗树
1.移动HEAD 指向,使其指向上一个快照
2.将HEAD移动后指向的快照回滚到暂存区(暂存区上一个版本)(HEAD在此)
调用 git reset --soft HEAD~之后实际上它影响了一颗树
1.移动HEAD 指向,使其指向上一个快照(暂存区仍然是最新的)
调用 git reset --hard HEAD~之后实际上它影响了三颗树
1.移动HEAD 指向,使其指向上一个快照
2.将HEAD移动后指向的快照回滚到暂存区(暂存区上一个版本)
3.将暂存区的文件还原到工作目录(工作目录上一个版本)(HEAD在此)
git reset 快照的id 根据id回滚(可以模糊查询)
git reset 版本快照 文件名/文件路径 回滚指定文件(HEAD指针不会变)
git revert HEAD 撤销前一次 commit
git revert HEAD^ 撤销前前一次 commit
git revert commit 撤销指定的版本,撤销也会作为一次提交进行保存。
1. git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
2. 在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。
3. git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。
6.2IDEA
编辑
编辑