git常用的一些命令总结

git常用的一些命令总结

  • git init 创建一个版本库
  • git add file 将文件从工作区提交到暂存区
  • git commit -m “blabla……” 将文件中暂存区提交到仓库
  • git status 查看仓库当前的状态
  • git diff 可以查看具体修改了哪些内容
  • git log 查看我们提交的历史记录
  • git log –pretty=oneline #输出少量版本信息和提交的内容
  • git reset –hard HEAD^ #返回上一个版本
  • cat filename #查看文件内容

如何从现在回到过去呢??
- git reset –hard HEAD^ #返回到上一个版本
- git reset –hard HEAD~100 #返回往上100个版本

如何从过去回到现在呢??
方法:共两步
- 用git reflog命令找到版本号
- 然后用命令git reset --hard versionNumber #versionNumber为版本号

问题:当我们要add很多文件,但是有那么一个不想add的,应该如何来完成呢??
例如我们想提交我们当前目录写的所有后缀为.java的文件,除了一个test.java这个文件不提交。
步骤如下:

  • git add *.java #添加所有的后缀为.java的文件
  • git reset HEAD test.java #把暂存区的test.java撤销到工作区
  • git commit -m “add all .java file except test.java”

注意:Git跟踪并管理的是修改,而不是文件,理解这一点很重要

撤销修改

  • 当什么时候我们想撤销修改呢??有如下情况
    第一种:当你改乱了工作区某个文件的内容时,想直接丢弃工作区的修改时,用命令
    git checkout - -filename 即可。
  • 第二种:当你改乱了工作区某个文件的内容时,还提交到 了暂存区时,想丢弃修改,应怎么办呢??第一步为:git reset HEAD filename 将文件从暂存区撤销到工作区,第二步为:按第一种情况修改,即 git checkout - -filename
  • 第三种:已经提交了不合适的修改到了版本库,想要撤销本次的提交,应该怎么办呢??利用版本回退即可解决问题。

删除文件

  • rm filename #用此命令即可完成文件的删除

Git知道你删除了文件,git status命令会告诉你,现在你可能是2种意图之一,如下;

  • 第一种:确实要从版本库中删除该文件,那就用命令 git rm 删除,并且 git commit提交即可。
  • 第二种:就是删错了,因为版本库中还有,因此可以很轻松的将误删的文件恢复到最新的版本: git checkout - -filename #git checkout 其实是用版本库中的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

远程仓库

大家都比较熟知Github,GitHub就是一个免费托管开源代码的远程仓库。

当我们有一个Github账号时,我们就可以利用Github来对我们的文件进行管理了。那应该如何将我们本地仓库的内容推送到远程仓库中去呢??
步骤如下:
- 第一步:git remote add origin git@github.com:xxxxxxx/remoterepositoryname.git #xxxxxxx为你的用户名,后面的为你的仓库名。这是与远程仓库建立连接。
- 第二步:git push -u origin master #若提示origin已存在,则用git remote rm origin删除。
以后用git push origin master 推送最新修改即可

从远程克隆

假设我们从零开发,最好的方式是先创建远程库,然后,从远程库克隆。
例如:我们在Github中新建了一个testgit远程库。则用如下命令完成克隆。
git clone git@github.com:xxxxxx/testgit.git
或者是:git clone https://github.com/xxxxxx/testgit.git#这种方式要输入账户名和密码,比较麻烦,但是有的情况下,我们通过第一种命令总是不能正确的进行clone,在这种情况下,可以选择此命令来完成clone。

创建与合并分支

master分支是主分支,我们一般不再这个分支上面工作,因此我们就需要创建分支,当我们在新分支上面完成我们的工作后,我们一般又要对分支进行合并,将我们的工作合并到主分支上面去。下面进行详细的介绍

  • git checkout -b dev #创建dev分支,然后切换到dev分支上面去。这个命令等价于如下两条命令
git branch dev  #创建dev分支
git checkout dev #切换到dev分支
  • git branch #查看当前分支(结果中:当前分支前面会标有一个*号)
  • git merge dev#合并dev分支,即把dev分支上面的工作成果合并到其它的分支上
  • git branch -d dev #合并完成后,我们就可以删除dev分支了

注意:合并分支时,加上- -no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast-forward合并就看不出曾经做过合并。

用如下命令可以查看分支历史

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

Bug分支

恢复bug时,我们会通过创建新的bug分支进行恢复,然后合并,最后删除。
但是,当我们的手头的工作没有完成时,先要把工作现场 git stash一下,然后去修复bug,恢复后,用git stash pop回到回到工作现场继续工作。

推送分支

要查看远程库的信息,用如下命令:git remote,若用git remote -v会显示更详细的信息。

推送分支,就是把该分支上的所有本地提交推送到远程库中,推送时,要提交本地分支,这样,Git就会把分支推送到远程库对应的远程库分支上。如下:
- git push origin master #推送到master分支上
- git push origin dev #推送到dev分支上

但是,在我们推送的过程中,我们会遇到推送失败的情况,这可能是因为远程分支比你的本地分支更新,需要先用git pull试图合并,如果合并有冲突,则需要解决冲突,并在本地提交,直到没有冲突后再用 git push origin <branchname>推送就能成功。

注意:如果使用git pull命令时 提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用如下命令即可

git branch - -set-upstream <branchname> origin/<branchname>

标签管理

打标签
  • 首先,切换到需要打标签的分支上
  • 然后,用git tag <name>就可以打一个新的标签了。也可以指定标签信息,如下git tag -a tagname -m "blabla..."
  • git tag #查看所有标签。
  • git show tagname #查看标签信息
操作标签
  • 如果标签打错了,可以删除:git tag -d tagname
  • 如果要推送某个标签到远程:git push origin tagname,或者一次性推送所有标签到远程:git push origin -- tags
  • 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除(以标签wu为例):git tag -d wu;然后,从远程删除:git push origin :refs/tags/wu

配置别名

偷懒是每个人的天性,我也喜欢偷懒
如果我们敲git st能够代替git status时,我们都希望能够这么做,但是,应该怎么才能这么做呢?这就需要我们配置一下即可完成。
用如下命令:git config --global alias.st status即可。其它的命令都可以这样来配置,这样方便我们更好的操作。

总结

这个是我学习廖雪峰老师git教程的一点总结,若觉得我的博客有不妥的地方,可以通过我删除。廖老师的git教程确实讲解的挺好的,也算是系统的学习了一下Git版本控制这个工具。在此,对老师表示感谢,这里奉上廖老师的git教程链接:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000,教程上讲解的更详细。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值