GIT 常用操作

89 阅读5分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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

​编辑

​编辑