Git常用命令

常用命令:

  • git init

初始化目录为git管理的仓库,增添.git目录,可以是非空目录

  • git log

显示日志信息,包括时间和提交者等信息

显示当前的HEAD和它的祖先的,递归是沿着当前指针的父亲,父亲的父亲…这样的原则。

  • git log --pretty=oneline

显示单行日志,版本号与注释

  • git log --graph --pretty=oneline --abbrev-commit

单行显示日志,以及提交校验码缩略,分支合并图

  • git status

检查当前状态,是否存在修改未提交

  1. git add 文件

将修改添加到暂存区

  • git commit -m "注释" 

将暂存区中的修改提交到版本库中,加上注释

  • git commit -amend

修改上一版本的提交信息,如:注释

  • git reset --hard HEAD^

commit之后对版本的回推,HEAD^表示上一版本,HEAD^^表示上上一版本,HEAD^100表示往前数第100版本

  • git reflog

检查所有提交过的版本

帮助你恢复你误操作的数据,例如你错误地reset了一个旧的提交,或者rebase(把本地未push的分叉提交历史整理成直线),…,可以使用reflog去查看在误操作之前的信息,并且使用git reset --hard 去恢复之前的状态。

其中,HEAD@{2}表示HEAD指针在两次移动之前的情况,HEAD与分支有关。

  • git reset --hard 版本号

(git reset是git commit的反向命令)

commit之后对版本的回推,按照版本号回推

与其他分支内的提交合并的修改可以被回推回来,已经删除的分支无法回推

  • git checkout  --  文件名

(git checkout是git add的反向命令)

撤销暂存区(撤销修改就回到添加暂存区后的状态)或工作区(还没有放到暂存区,撤销回到和版本库一模一样的状态)对文件的修改

git checkout接受分支名称和文件(路径)名称,因此可以使用--强制git将--之后的任何内容解释为文件名,即使它本来是有效的分支名称。

  • git checkout .

用暂存区全部文件替换工作区的文件 

这两个操作很危险,会清除工作区中未添加到暂存区中的改动。

  • git checkout HEAD .与git checkout HEAD 文件名

会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。

这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

  •  git reset HEAD 文件名

将文件移出暂存区(再使用 git checkout -- 文件名 就能恢复为最原始状态)

git reset HEAD 暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

  • git branch

查看分支,当前分支标记*号

  • git checkout -b 分支名称

创建并切换分支,相当于git branch 分支名(创建)与git checkout 分支名(切换)两条命令

  1. 创建并切换分支,相当于git branch 分支名(创建)与git checkout 分支名两条命令

切换分支,在merge过程未结束时无法切换

  • git merge 分支名称

合并分支到当前分支,冲突部分会出现由>>>,===,<<<标记的文件中分支间不同的信息

注意merge中的冲突解决后,需要进行add和commit进行提交,才能真正解决冲突

  • git merge –no-ff  -m “注释” 分支名称

保留分支信息,在log中,分支commit的版本保留可见

  • git branch -d 分支名称

删除分支

  • git stash

隐藏当前分支的修改(工作区和暂存区未提交内容),否则无法转换到其他分支,而分支commit后不用保存

  • git stash list

查看隐藏历史列表

  • git stash apply

将最新隐藏的修改恢复;

如果在其他分支恢复,就会将修改自动merge到该分支;

如果本分支有本地修改,就需要add,再apply进行auto-merge的冲突处理,提交一个新的版本

  • git stash drop

删除最新的隐藏历史

  • git stash pop

从隐藏历史列表中取出最新内容并删除

  • git remote –v

查看远程库的详细信息

  • git remote add <short name><remote URL>

例如:git remote add origin 远程库地址

给本地库添加远程仓库,名称定为short name

远程主机的默认名称是origin

  • git remote rm <destination>

从存储库中删除远程连接

  • git remote rename <old name><new name>

给远程仓库重命名(short name)

  • git push 远程主机名 本地分支名:远程分支名

将本地分支修改推送给远程库分支

如果本地分支名与远程分支名相同,则可以省略绿色的部分

  • git pull 远程主机名 远程分支名:本地分支名

将远程库的分支与本地分支同步(git pull是相当于从远程仓库获取最新版本,然后再与本地分支merge)

如果远程分支是与当前分支合并,省略绿色的部分

git pull = git fetch + git merge

  • git fetch

更安全也更符合实际要求,因为可以在merge前,查看更新情况,根据实际情况再决定是否合并。

FETCH_HEAD: 某个branch在服务器上的最新状态。

  • git clone 远程库地址

将其他仓库克隆到本地,包括被clone仓库的版本变化

(本地无需git init, .git文件夹里存放着与远程仓库一模一样的版本库记录)

  • git diff

查看工作区和暂存区差异

  • git diff --cached

查看暂存区和版本库差异

 基本知识:

工作区,版本库与暂存区(stage):

工作区:指的是在电脑里能看到的目录

版本库(Repository):是.git目录,Git的版本库里存了很多东西,其中最重要的就是称为stage(.git目录的index文件)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD(HEAD 指向最近一次commit里的所有snapshot)。


与Git的最主要的区别?

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,干活的时候,用的都是自己的电脑,必须联网才能工作。

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,工作的时候就不需要联网,多个人协作时,只需把各自的修改推送给对方,就可以互相看到对方的修改了。

git比svn优秀:git跟踪并管理的是修改,而不是文件

分支管理:

通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。

首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

bug分支(临时分支):

在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

Git还提供了一个stash功能,可以把当前工作现场dev隐藏起来,等以后恢复现场后继续工作。

一般情况下,要推送的分支有:

  1. master分支是主分支,因此要时刻与远程同步。
  1. 一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值