git各种情况下常用命令

      我使用的是IDEA,IDEA本身继承的有Git,并且使用起来十分方便,对于不熟悉Git命令的同学来说是十分友好的,下面我就大概介绍一下IDEA中git的使用以及各种情况下所使用的git的命令。

IDEA中Git的使用

     关于配置git就不说了,大家可以去搜索一下,首先说一下Git的位置,如下所示:

在IDEA的右下角有一个Git:xxxx,其中xxxx指的是Git当前所在的分支,点击分支,我们可以看到下图所示:

      其中Local Branches指的是当前项目的本地分支、Remote Branches指的是远程仓库的远程分支,无论是本地分支还是远程分支,我们都可以单机并且选择check out来进行切换。本地分支的话我们可以直接通过New Branch创建并且将创建的本地分支通过push上传到远程分支上。(如果直接在远程仓库创建了分支,那么更新一下远程分支就可以了,最简单的办法就是直接pull一下代码,新建的远程分支就更新过来了,当然你也可以通过命令来进行更新,个人认为直接pull更快一些)

 // 将远程仓库的分支列表更新到最新,取回本地以便查看远程分支列表
1.  git fetch   

//  查看远程分支列表
2.  git branch -a   


// 核心一步:将远程仓库的xxx分支拉取到本地xxx分支,并切换到xxx分支
3.  git checkout -b xxx origin/xxx   

常见的情况下使用的Git命令

初始化仓库:git init

git init命令用来初始化一个仓库,初始化完成以后,git仓库会在初始化的项目目录下生成一个.git目录,该目录包含了资源的所有元数据。

Git配置用户信息:

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

1./etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
2.~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
3.当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

例子:
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

配置完成以后我们可以在当前user的.gitConfig文件下面看到如下信息

从远程仓库克隆代码

git clone [url]

例子:git clone git@github.com:schacon/simplegit.git

查看远程分支列表

 git branch -a

查看本地分支列表

git branch

创建/切换本地分支

git branch yourbranch

git checkout yourbranch

或者:git checkout -b yourbranch

删除本地/远程分支

git branch -d xxxxx

git push origin -d yourbranch

git命令add

git add .

.  表示当前目录

git命令commit

git commit -m "xxx"

commit是将暂存区里的改动给提交到本地的版本库,-m后面的参数表示标注一下本次提交代码的内容

git命令push

git push <远程主机名> <本地分支名> <远程分支名>

例子:git push origin master:refs/for/master

上述例子是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名。第一个master是本地分支名,第二个master是远程分支名。

查看当前项目工作目录与暂存区的区别

git status

撤销

因为暂存区的存在,撤销修改分为几种情况(通过 git status 查看仓库状态时会提示相关撤销修改的命令):

  1. 修改后,文件没有通过git add放入暂存区(即文件一直在工作区):用 git checkout -- 文件名 撤销工作区的改动(回到跟版本库一样的状态,即回到最近一次 git commit时的状态,所有改动全部清除)
  2. 修改后,文件放入暂存区,且文件没有再次修改(即文件已经进入暂存区):分两步:先用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),再执行 git checkout -- 文件名 清除工作区的改动
  3. 修改后,文件放入暂存区,且文件再次修改:分三步:先用 git checkout -- 文件名 撤销工作区的改动,再用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),最后执行 git checkout -- 文件名 清除工作区的改动
  • 通过 git checkout -- 文件名 命令可以撤销文件在工作区的修改。 
  • 通过 git reset 文件名 命令可以撤销指定文件的 git add 操作,即这个文件在暂存区的修改。 
  • 通过 git reset 命令可以撤销之前的所有 git add 操作,即在暂存区的修改。

备注:git checkout -- 文件名 命令中的 -- 表示命令行在 -- 之后没有更多的选项。这样的好处是,如果碰巧有一个分支与文件名重名,仍然可以恢复该文件,而不是切换到同名的分支。

commit以后如何撤消回未commit状态

git reset --soft HEAD^

解释:HEAD^的意思是上一个版本,也可以写成HEAD~1,如果你进行了2次commit,想都撤回,可以使用HEAD~2;

  •  --soft 不删除工作空间改动代码,撤销commit,不撤销git add . 
  •  --mixed 不删除工作空间改动代码,撤销commit,并且撤销git add . 操作这个为默认参数,git reset --mixed HEAD^ 和 git reset   HEAD^ 效果是一样的。
  • --hard 删除工作空间改动代码,撤销commit,撤销git add . ,完成这个操作后就恢复到了上一次的commit状态

备注:如果commit注释写错了,只是想改一下注释的话只需要:git commit --amend  然后就会进入vim编辑器,修改完保存就好了。

git查看当前提交代码与上一次提交的不同之处

HEAD     commit版本

Index     staged版本

查看尚未暂存的文件更新了哪些部分,不加参数直接输入

    git diff

此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异

也就是修改之后还没有暂存起来的变化内容。

查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异

    git diff --cached

    git diff --staged

显示的是下一次commit时会提交到HEAD的内容(不带-a情况下)

显示工作版本(Working tree)和HEAD的差别

    git diff HEAD

直接将两个分支上最新的提交做diff

    git diff topic master 或 git diff topic..master

输出自topic和master分别开发以来,master分支上的changed。

    git diff topic...master

Changes that occurred on the master branch since when the topic

 branch was started off it

查看简单的diff结果,可以加上--stat参数

    git diff --stat

查看当前目录和另外一个分支的差别

    git diff test

显示当前目录和另一个叫'test'分支的差别

    git diff HEAD -- ./lib

显示当前目录下的lib目录和上次提交之间的差别(更准确的说是在当前分支下)

比较上次提交commit和上上次提交

    git diff HEAD^ HEAD

比较两个历史版本之间的差异

    git diff SHA1 SHA2

通过git合并各个分支代码过程,并解决冲突

1、如果正常情况下,分支和主分支的代码没有冲突,切换到主分支:使用  git merge dev即可快速合并分支,期中dev是你的分支名称。

如果主分支也修改了一部分代码,分支也修改了代码,那么会产生冲突,那么先使用  git merge dev合并分支,这样git会将所有修改或新增的代码都在主分支的待提交显示,冲突的话会有黄色!标注。那么就需要手动修改已冲突的代码,删掉无用的,保留有用的代码,如果是自己修改的就可以自己解决冲突,如果是多人修改,最好多人一起查看冲突,避免代码误删。

修改冲突代码后,使用git add readme.txt(冲突代码类名)手动提交,然后再全部提交更新。

2、快速合并是每个时间段都会插入代码的,这样如果新分支代码有问题,不太好解决,所以用一次性合并分支,如果有问题,线上部署以前的代码,不至于服务器挂了。

git命令:git merge --no-ff -m "合并pc分支" www_2.0

期中git merge --no-ff -m是git合并代码,不多解释了。后面 "合并pc分支"是合并到主分支的备注,www_2.0是需要合并到主分支的分支名称。

查看git历史

git log

显示提交历史

git show <commit-hashId>

显示某次提交的内容

本地回退/切换到提交过的某个版本

首先是使用 git reflog 命令行,如下:
$ git reflog
69c9ef3 HEAD@{0}: commit (amend): test
f2ba7c4 HEAD@{1}: pull: Fast-forward
a90ac5d HEAD@{2}: checkout: moving from master to dev

然后再使用 git reset --hard  tag 命令行,如下:

git resert -- hard  69c9ef3

tag 代表某条历史提交记录的标志

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值