Git总结

git在本地分为三个区域,工作区、暂存区和本地仓库,具体情况如下:

git的一般操作就是本地代码的修改提交回滚,以及与远程仓库的拉取、合并、提交等。

git fetch   从远程仓库上抓取分支到本机origin的dev分支上

git merge  将origin上的分支合并到工作区的dev分支上

git pull  相当于前两个命令合在一起

#切换到master分之后,将dev分支合并到master分支

git checkout master

git merge dev

当本地仓库向远程仓库push失败的时候,先从远程仓库上fetch下最新的代码merge到本地的分支上,然后才能push 

当fetch下来的代码与本地仓库的分支代码merge时发生冲突的话,需要解决掉冲突文件中的冲突再push。冲突文件这时已经被git程序更改,标记了冲突的位置。此时可以查看git status根据提示来操作,具体的做法:

1,若想回到没有更改前,即merge前,执行git merge --abort。再进行想要的操作。

2,可以直接更改冲突文件,然后git add file 然后git commit,再push

对于工作区、暂存区、本地仓库代码的差异比较

diff  用于对比差异

git diff 默认用于比较工作区和暂存区之间的差异

git diff --cached 和git diff --staged比较暂存区和本地仓库的差异 

git diff HEAD  是工作区与本地仓库的差异

查看帮助  git merge --help 或者git help merge

对于分支相关的操作

git branch 查看所有分支

git branch -v 查看所有分支详细信息

git branch  branchname 新建分支

git branch -d branchname 删除分支

git checkout branchname  切换分支

git checkout -b branchname 创建新分支并切换到新分支

git checkout -- filename 把工作区的修改撤销,还原到修改前的暂存区的文件的内容(如果修改前已经add到暂存区),或者还原到本地仓库的文件的内容(修改前没有add到暂存区)。即把暂存区或者本地仓库的最近一次的提交检出到工作区使文件的更改撤销,让文件回到最后一次add或commit的状态。

git checkout  versionid filename  可以将工作区某个文件还原到指定版本的那个文件的内容

具体场景:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,可以分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

在Git中,用HEAD表示当前版本,也就是最新的commit的那个版本。上一个版本就是HEAD^,上上一个版本就是HEAD^^。也可以用数字HEAD~,HEAD~2

关于reset的几个参数

git reset --mixed HEAD~   将HEAD指针指向上一个版本,同时将本地仓库改变后的HEAD的指向的内容覆盖到暂存区

git reset HEAD~  同上,默认是--mixed

git reset --hard HEAD~ 将HEAD指针指向上一个版本,同时将本地仓库HEAD的指向的内容同时覆盖到暂存区和工作区

git reset --soft HEAD~  只将本地仓库的HEAD指针指向上一个版本,其他不做改变。

对于回滚来说:

reset是针对的commit级别的操作,移动HEAD指针,同时可能会影响到暂存区和工作区

checkout改变的是工作区的内容,reset改变的可能是工作区、暂存区和HEAD指针的内容

git revert versionid  来使本地仓库的内容回到指定的版本内容。与reset的不同是,如果reset要回到以前的某个版本,则HEAD指针移到指定的版本的位置,此后的commit则不显示在git log里面了。而revert则是把它当做一次commit,即把工作区的内容修改成指定版本的内容然后add和commit了。

git cherry-pick versionid  经常用于将某个分支上的某次commit合并到master上,而分支的其他commit暂时不合并。(比如修复bug的commit)

git merge和git rebase

两者最终结果相似,都是将分支合并,不过合并过程和方式不同。

上图:执行git merge master,把master分支合并到dev分支上

若是执行git rebase,就会将原来dev的两次提交d和e添加到master分支后面,变成d‘和e’。若有冲突的话,修改后使用git add 和git rebase --continue即可。过程中任何时候可以使用git rebase --abort来终止rebase操作回到原来的状态

其余还有一些命令,比如git log、git config等等,不写了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git总结-看这一篇就够了!

    版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软...

    唔仄lo咚锵
  • git 相关总结

    北漂的我
  • GIT使用总结

    git认证指使用git能与github或gitlab 进行通信。这里将以github为例来说明。

    努力在北京混出人样
  • Git知识总结

    暂存区:又称索引区。是git add操作以后将添加的文件存放的区域。在.git文件夹中以index文件存在

    石的三次方
  • git 实践总结

    本地分支和远程分支各自有提交,这时,如果直接pull,会要求将远程分支merge到本地,这样虽然可以,但是确实产生一个无用的merge 提交记录。

    JarvisChu
  • Git使用总结

    Git is a distributed version control system. Git is free software distributed u...

    爱撒谎的男孩
  • Git使用总结

    Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

    轩辕小子
  • Git学习总结1

    Git是目前世界上最先进的分布式版本控制系统(没有之一) Git有什么特点?简单来说就是:高端大气上档次!

    曼路
  • Git学习总结2

    13.远程仓库 将本地Git 与Github来链接起来,传输通过ssh加密。 (1)创建SSH Key 打开本地G...

    曼路

扫码关注云+社区

领取腾讯云代金券