GIT常用命令

tips

  • git 配置完 ssh 后,记得初始化仓库url一定不要用 https,要用git@, 不然每次都要输密码

  • 常用命令

    • git status,git add, git commit, git push, git tag, git push origin --tags,git add -A

显示日志

1
2
3
$ git diff <file> #和上次提交对比文件
$ git log # 显示提交日志
$ git log --pretty=oneline #以简略方式显示日志

版本回退

1
2
3
$ git reset --hard HEAD^ #回退到上一个版本,注意**如果当前更改未提交,回退后将无法恢复**
$ git reset --hard HEAD^^ #回退到上上个版本
$ git reset --hard HEAD~5 #回退到之前第5个版本

版本错误回退后的恢复

1
2
$ git reset --hard 版本号 #错误回退后,可通过版本号再恢复回来
$ git reflog # 如果想回退不知道版本号,可以用此命令显示
1548425990893

撤销文件的更改

1
2
$ git checkout -- <file> #撤销更改,有两种情况,如果add过(即暂存过),则会回复到暂存的版本
# 如果没有暂存过,则会回复到上一次提交的版本

撤销文件的删除

未提交过的文件是无法恢复的

  1. 如果使用 git rm <file>删除的文件
1
2
$ git reset HEAD <file> #先使用这条撤销git版本库中的更改
$ git checkout -- <file> #再使用这条恢复删除的文件
  1. 如果是 rm <file> 或者直接手动删除的文件
1
$ git checkout -- <file> #恢复删除的文件

添加远程仓库

1
$ git remote add origin <url/ssh link>

分支管理

1
2
3
4
5
$ git branch --list #列出本地所有分支
$ git checkout -b dev #(创建并)切换到dev分支
$ git branch -a # 列出本地分支和远程分支,远程分支会以remote/开头
$ git branch -b dev origin/branch_name #本地创建分支dev并把远程分支branch_name拉取到本地
$ git push -u origin dev_local:dev_remote #本地分支dev_local推送到远程分支dev_remote

清除本地缓存

主要是用于解决.gitignore不生效的问题

1
$ git rm -r --cached .  #删除本地所有缓存的索引,从而解除对.gitignore指定的文件的跟踪

另外一种可能是文件编码问题,改为UTF-8最为合适,不要是UTF-16等奇怪的编码。

git安装

  • System: windows10

ssh -key配置

 Git bash 输入cd ~/.sshls 检查电脑本机是否有ssh key. 如有则跳过第一步

  1. 进入~路径下,必须保证当前路径在~路径下

    • 在git命令行敲击 ssh-keygen -t rsa -C "xxx@yyy.zzz" //建议写自己真实有效的邮箱地址。注意:在敲代码时不要将双引号也敲击进去。

    • 然后命令行会出现如下提示:

      • Enter file in which to save the key (/c/Users/xxxx_000/.ssh/id_rsa): ,直接回车跳过
      • Enter passphrase (empty for no passphrase): 建议直接回车,即没有密码。也可以输入你的密码,这个密码在你push的时候会要求填写,此外输入的密码是隐藏的
      • Enter same passphrase again: 确认密码(若第一次是回车,这次就直接回车跳过)
    • 完成以上步骤,密钥就生成完成了。剩下提示信息可忽略。

    • id_rsa 为密钥 ,id_rsa.pub.为公钥

  2. 添加ssh key 到Github上 登陆GitHub , 点击右上角的“▼”→Settings→SSH kyes→Add SSH key。然后再用文本文档打开c:/Users/xxxx_000/.ssh里面的id_rsa.pub文件,全选复制公钥内容。【也可以在git bash输入cat ~/.ssh/id_rsa.pub获取公钥内容】,之后将公钥粘贴到GitHub中Add an SSH key的key输入框,最后Add Key

  3. 配置账户

  • $ git config --global user.name “your_username” #设置用户名

  • $ git config --global user.email “your_registered_github_Email”#设置邮箱地址(建议用注册giuhub的邮箱)

  1. 测试ssh keys是否设置成功。

    • git bash 中输入ssh -T git@github.com进行测试,按指示输入即可

    • Hi xxx! You've successfully authenticated, but GitHub does not provide shell access. #出现此句话,说明设置成功。

到这里,git相关的公钥和账户配置已经完成。

常用命令

  1. 创建仓库(公开)

    • 点击github右上角的+里面的new repository
      • 在repository name栏中输入仓库的名称
      • description 栏中可以设置仓库的说明
      • 勾选Initialize this repository with a README ,如果想向GitHub添加手中已有的Git仓库,建议不要勾选
      • Add .gitignore 下拉框中选择要使用的框架
      • Add a license选择添加许可协议文件
      • 点击create repository按钮,完成仓库的创建
  2. 克隆之前首先要选择克隆文件的位置(cd)

    • clone已有仓库 git clone git@github.com:XXX/yyyy.git //XXX为github的用户名,yyy为仓库名
  3. 在对应的文件夹中添加新有项

    • git status
  4. 提交

    • git add mmm.sss //mmm为文件名称,sss为文件拓展名(常用git add .
    • git commit -m "hhh"//hhh为git commit 提交信息,是对这个提交的概述
    • git log//用于查看提交日志
    • git push//更新GitHub上的仓库
  5. 用git创建仓库

    • mkdir nnn //仓库名
    • cd hhh
    • git init //初始化仓库
    • git status //查看仓库状态
    • touch README.md //创建READEME.md文件
    • git add ERADME.md //添加ERADME.md至暂存区
    • git commit -m "hhh" //如果想要提交信息记录的更详细,请不要加 -m
    • git log --pretty=short//加--pretty=short 只显示提交信息的第一行
    • git log ggg //ggg是指指定的文件或目录,用于查看指定的目录、文件的日志
    • git log -p //查看提交所带来的改动
    • git log -p ggg//查看指定文件的改动
    • git diff//可以查看工作树,暂存区,最新提交之间的差别
    • git diff HEAD//查看工作树与最新提交的差别
  6. 分支操作

    • git branch //显示分支一览表,同时确认当前所在的分支
    • git checkout -b aaa //创建名为aaa的分支,并且切换到aaa分支
      • git branch aaa //创建名为aaa的分支; git checkout aaa// 切换到aaa分支)能和git branch -b aaa 得到同样的效果
    • git checkout - //切换到上一分支
  7. 合并分支

    • git checkout master//切换到master分支

    • git merge --no--ff aaa // 加--no--ff 参数可以在历史记录中明确地记录本次分支的合并

    • git log --graph //以图表形式查看分支

  8. 更改提交的操作

  • git reset//回溯历史版本 - git reset --hard //回溯到指定状态,只要提供目标时间点的哈希值
  1. 推进历史

    • git reflog //查看仓库的操作日志,找到要推历史的哈希值

    • git checkout master

    • git reset --hard ddd //ddd为要推进历史的哈希值

    • 修改提交信息 git commit --amend

    • git remote add eee git@github.com:用户名/仓库名.git 添加远程仓库,并将git@github.com: 用户名/仓库名.git远程仓库的名称改为eee

    • git push -u eee master //推送至远程仓库 master分支下 -u 参数可以在推送的同时,将eee仓库的master分支设置为本地仓库的当前分支的的upstream(上游)。添加这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从eee的master分支中获取内容

    • git checkout -b feature d eee/feature d //获取远程的feature d分支到本地仓库,-b参数后面是本地仓库中新建的仓库的名称

    • git pull eee feature d //将本地的feature d分支更新为最新状态

    • 在GitHub上面查看两个分支之间的差别,只需要在地址栏中输入http://github.com/用户名/仓库名/分支1...分支2

  2. tag

    • git tag 显示已有标签
    • git tag -a v1.4 -m 'my version 1.4' 新建标签
    • git push origin v1.5 推送标签到服务器
    • git push origin --tags 一次性推动所有标签

常用指令详解

git add

一次性暂存所有内容,git add * 会有.gitignore提示,以下命令则不会报错:

命令 含义
git add -A stages all changes
git add . stages new files and modifications, without deletions
git add -u stages modifications and deletions, without new files