常用git命令

文章目录
  1. 1. 前言
  2. 2. 配置
  3. 3. 克隆项目
  4. 4. SSL certificate problem
  5. 5. 上传项目
  6. 6. 查看日志
  7. 7. 版本回退
    1. 7.1. reset
    2. 7.2. revert
  8. 8. git push 403
  9. 9. commit message

前言

学习工作中,越来越习惯使用git,本文记录一下常用的git命令,方便以后查阅。

配置

1、全局配置

1
2
3
git config --list
git config --global user.name "voidking"
git config --global user.email "voidking@qq.com"

2、生成ssh密钥
ssh-keygen -t rsa -C "voidking@qq.com",按3个回车,密码为空。

C:\Users\Administrator\.ssh下,得到两个文件id_rsa和id_rsa.pub。
需要注意的是,命令中的-C参数,后面跟的内容是注释。也就是说,内容随意,与github完全无关。

3、在GitHub上添加SSH密钥
打开id_rsa.pub,复制全文。https://github.com/settings/ssh ,Add SSH key,粘贴进去。

4、测试
ssh git@github.com,提示:

1
2
3
4
5
6
The authenticity of host 'github.com (192.30.252.128)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.128' (RSA) to the list of known hosts.
Hi voidking! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

克隆项目

1、普通克隆

1
git clone https://github.com/voidking/voidking.git

2、切换分支

1
2
git branch -a
git checkout origin/branch_name

SSL certificate problem

1
git config --global http.sslVerify false

上传项目

1、master分支上传

1
2
3
git add .
git commit -m "something"
git push

2、其他分支上传

1
2
3
git add .
git commit -m "something"
git push origin HEAD:branch_name

查看日志

使用git log,只可以查看到当前分支的commit日志,而且不能查看已经删除了的commit操作。

若要查看全局日志,需要使用git reflog或者git log -g,可以查看所有分支的所有操作记录,包括reset操作、checkout操作、已经删除了的commit操作等等。

版本回退

版本回退常用git resetgit revert命令,这两个命令都是作用于当前分支(HEAD所在的分支)。git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容。

reset

1、每个文件单独版本回退

1
2
3
4
git status
git log
git reset 1fe37e1bcbb894a1b594cf405ae31880cbaa6cd7 filepath/filename
git checkout filepath/filename

2、全部文件版本回退

1
git reset --hard 1fe37e1bcbb894a1b594cf405ae31880cbaa6cd7

3、远程仓库回退

1
2
git reset --hard 1fe37e1bcbb894a1b594cf405ae31880cbaa6cd7
git push -f

4、回退后回退
reset后,回退版本之后的commit操作记录,都被删除掉了。
如果回退过之后又后悔了,那么,需要查看全局日志,然后再次执行reset操作。

1
2
git reflog
git reset a246dcd --hard

需要注意的是,版本回退,我们没有使用git checkout
假设当前在bugFix分支,使用git checkout,理论上输入如下命令:

1
2
git reflog
git checkout a246dcd

这时,输入git log,发现版本完美回退了。但是,这只是假象,输入git branch -a,发现HEAD从bugFix分支切换到了a246dcd那个commit。而bugFix分支,没有进行任何改变。所以,我们不使用git checkout进行版本回退,而是使用它进行历史版本的查看。

revert

1、全部文件版本回退

1
git revert cf000

2、远程仓库回退

1
git push origin HEAD:branch_name

回退过之后又后悔了,那么,执行reset操作即可。

1
2
git log
git reset a246dcd --hard

git push 403

公司电脑(win10系统)以前有一个用户,github账号是haojin。现在电脑分配给我使用,但是,我的github账号是voidking,在我git push的时候报错403。

1
2
3
$ git push
remote: Permission to voidking/hexo-back-up.git denied to haojin.
fatal: unable to access 'https://github.com/voidking/hexo-back-up.git/': The requested URL returned error: 403

哪怕重置了全局设置的user.name和user.email,依然会报错。
原因:win10系统自动保存用户凭据,gitpush的时候默认使用以前的用户凭据。
解决办法:Win+X,搜索,控制面板,用户账户,凭据管理器,管理Windows凭据,普通凭据,删除github的凭据即可。

commit message

git commit -m "something",之后,想要修改“something”为“something_new”。

使用git commit --amend,可以修改最后一次commit的附加信息。