目录
git%E5%91%BD%E4%BB%A4-toc" style="margin-left:40px;">1、常用git命令
git%20merge%20%E5%92%8C%20git%20rebase%20%E7%9A%84%E5%8C%BA%E5%88%AB-toc" style="margin-left:40px;">2、git merge 和 git rebase 的区别
git%20fetch%20%E5%92%8C%20git%20pull%E7%9A%84%E5%8C%BA%E5%88%AB-toc" style="margin-left:40px;">3、获取远程仓库数据命令 git fetch 和 git pull的区别
git%20reset%20%E5%92%8C%20git%20revert%20%E7%9A%84%E5%8C%BA%E5%88%AB%C2%A0-toc" style="margin-left:40px;"> 4、git reset 和 git revert 的区别
1、常用git命令
- git init //初始化本地仓库
- git status //查看文件状态
- git diff //显示工作目录中当前文件与暂存区的差异。
- git diff --cached //显示暂存区中文件与最后一次提交的差异。
- git log //查看提交的历史记录
- git add . //添加所有修改过的文件到暂存区
- git add 文件名 // 添加指定文件到暂存区
- git commit -m "提交名" //提交暂存区的文件到本地仓库,并给本次提交取个名字
- git checkout . // 用暂存区中的文件覆盖工作区,即撤销工作区所做的所有修改
- git reset HEAD . // 用本地仓库的文件覆盖暂存区中的
- git checkout HEAD . // 用本地仓库的文件覆盖暂存区和工作区
-
git reset --soft commit编号 //将 HEAD 指向指定的提交,但保留暂存区和工作区的提交的状态,只删除本地仓库中的提交。(比如说有三次提交,我执行这个命令并且编号为第一次提交的编号,那么最后显示的提交信息就只有第一次提交了,但是之前做的修改还保留在暂存区和工作区),如下图:
- git reset --hard commit编号 // 将 HEAD 指向指定的提交,并删除暂存区和工作区的提交状态,使其与 HEAD 一致。(将修改的代码撤销,并且把提交的记录也删掉,即三个区里面的修改都被撤销了)
-
git remote add origin 远程仓库地址 //连接远程仓库
- git tag //创建一个标识指向当前提交
- git branch -av //查看当前分支信息
- git branch dev //创建名为dev的分支
- git checkout dev //切换到dev分支
git%20merge%20%E5%92%8C%20git%20rebase%20%E7%9A%84%E5%8C%BA%E5%88%AB">2、git merge 和 git rebase 的区别
-
git merge
:- 将两个分支合并成一个,创建一个新的合并提交(merge commit),这个提交会包含两个分支的共同祖先以及两个分支的最新提交。
- 它保留了分支的历史和提交顺序。
冲突测试:
出现上面这种冲突你也可以不撤销合并,直接去代码中挑选保留哪一部分代码也行:
-
git rebase
:- 将一个分支上的提交重新应用到另一个分支上,而不是创建一个新的合并提交。
- 它改变了历史,将提交重新排序和应用到新的基线上。
使用 git rebase 出现冲突时解决方法和merge差不多 :
git%20fetch%20%E5%92%8C%20git%20pull%E7%9A%84%E5%8C%BA%E5%88%AB">3、获取远程仓库数据命令 git fetch 和 git pull的区别
git%20reset%20%E5%92%8C%20git%20revert%20%E7%9A%84%E5%8C%BA%E5%88%AB%C2%A0"> 4、git reset 和 git revert 的区别
后面都是直接跟某次提交的编号,
总的来说就是git reset 是回到你指定的那个提交,但是如果这个项目你已经分享给团队了而且有人已经在这个提交上做了修改的话,你再回到这次提交里面就会包含了别人修改的内容,这就是改变历史。
而使用git revert 是新建一个提交,这个提交会撤销掉你指定的提交的修改,也就是不会往你之前的提交里面加东西,所以它是不会改变历史的。
- push origin master:master //将本地master分支推送到远程的master分支