git/svn

补充1:Git命令知多少

2019-08-14  本文已影响0人  宇晨棒棒的

这次主要是了解一些多项目情况下可能会用到git命令

1.git log -------->打印提交历史

在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史.

默认是不用任何参数的话,git log会按提交时间列出所有的更新操作.

常用的语句: git log --pretty=format:"%h %s" --graph

--pretty 选项指定打印的格式

%h 列出每次提交对象的hash值

%s 每次提交的注释信息

2.git fork:不是一个Git命令,而是一种工作流.

它不是使用单个服务端仓库作为『中央』代码基线,而让各个开发者都有一个服务端仓库,这意味着各个代码贡献者有2个Git仓库而不是1个:一个本地私有的,另一个服务端公开的.

Forking工作流的一个主要优势是,贡献的代码可以被集成,而不需要所有人都能push代码到仅有的中央仓库中。 开发者push到自己的服务端仓库,而只有项目维护者才能push到正式仓库。 这样项目维护者可以接受任何开发者的提交,但无需给他正式代码库的写权限

3.git reset:版本回退出现的场景:

1)当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时

git checkout -- filename

2)当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改:

git reset HEAD file  && git checkout -- filename 

3)已经提交了不合适的修改到版本库时,想要撤销本次提交(没有提交到远程仓库):

git reset --hard commit_id

4.Git revert版本回退:

Git revert用来撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容

Git revert和git reset都可以进行版本的回退,将工作区回退到历史的某个状态,二者有如下的区别

git revert是用一次新的commit来回滚之前的commit,而git reset是直接删除指定的commit(并没有真正的删除,通过git reflog可以找回),这是二者最显著的区别;

git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容;

在回滚这一操作上,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit"中和"之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现;但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。

5.git stash

Git stash用来暂存当前正在进行的工作, 将工作区还没加入暂存库的内容压入本地的Git栈中,在需要应用的时候再弹出来.

A.应用场景:

1)想pull 最新代码,又不想加新commit

2)为了修复一个紧急的bug,先把工作区保存起来,使返回到自己上一个commit,改完bug之后再把工作区弹回来,继续原来的工作

B.git stash的基本流程:

1)git stash             #暂存工作区尚未提交的内容

2)进行你的操作             #在上一个提交的状态之上完成你的操作

3)git stash pop            #将暂存的内容弹出并应用

C.多次使用git stash命令后,你的栈里将充满了未提交的代码:

1)git stash list #将当前的Git栈信息打印出来,找到对应的版本号

2)git stash apply 版本号   #将指定版本号的暂存内容取出来

3)git stash clear #清空栈

上一篇 下一篇

猜你喜欢

热点阅读