Git命令集

本文收集了常用的Git命令,方便平时开发查询。

一、常用命令

git reset

  1. git log 找到上次git commit的 id
  2. git reset –hard commit_id
    完成撤销,同时将代码恢复到前一commit_id 对应的版本。
  3. git reset commit_id
    完成Commit命令的撤销,但是不对代码修改进行撤销,可以直接通过git commit 重新提交对本地代码的修改。
1
git reset --hard 0530be1c55b53dc809321fda4ee6f613a245d356

git clone

1
2
3
4
5
6
//最好用以下方法Clone单个分支:
$ git clone http://git1.jd.com/app/JD4iPhone10.git -b 你要的分支名 --single-branch

//clone成功后,想获取其他分支,用以下命令:
$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git fetch --all

git checkout

1
$git checkout branche_name	

git fetch

1
2
3
4
//在本地新建一个dev分支,并将远程origin仓库的dev分支代码下载到本地dev分支
$ git fetch origin dev:dev
//只fetch dev分支到本地
$ git fetch origin dev
  • Unstaged local changes (before you commit)
    1. Discard all local changes, but save them for possible re-use later. git stash.
    2. Discarding local changes (permanently) to a file. git checkout –
    3. Discard all local changes to all files permanently. git reset –hard.

git cherry-pick

cherry-pick会重演某些commit, 即把某些commit的更改重新执行一遍。

可以在当前分支上,cherry-pick其他分支上的commit

1
2
3
$ git cherry-pick 0ed412c23ef5547c8045555966e8c8353cada173

$ git cherry-pick 0ed412c23ef5547c8045555966e8c8353cada173 463bbb800e6642c5a1e6c7d3ebd7772654ac9c2c

git reset

撤销commit

1
2
3
4
5
6
7
//注意:reset时候,不要有需要合并的代码,即之前未pull下来的。
//commitid 是需要退回的提交
$ git reset -–hard <commit_id>
$ git reset <commit_id>

//撤销当前工作区文件
$ git reset -–hard

git differ

比较两个版本代码

1
2
3
4
5
6
7
8
// 比较commit_id_1和commit_id_1
$ git diff <commit_id_1> <commit_id_1>

// 比较doc_path文件夹下的commit_id_1和commit_id_1
$ git diff <commit_id_1> <commit_id_1> <doc_path>

// 比较doc_path文件夹下的commit_id_1和commit_id_1,并导出到export_path.txt到文件
$ git diff <commit_id_1> <commit_id_1> <doc_path> > <export_path.txt>

二、ignore file

三、Error

Git push

git push error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54

处理方案:

方案一:

1
2
$ git config --global http.postBuffer  524288000
$ git config --global https.postBuffer 524288000

方案二:

对于 errno 54 这个错误,经尝试 http 或者 https 协议都无法正常提交。
必须改为 ssh 方式来提交代码。也就是必须使用公私钥的方式进行账号验证,并提交代码。
具体生成公私钥的方法,参见 github 帮助文档
https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/
同时找到 git config 当中的项目 url 配置项,改为 ssh 协议类型的项目地址。
例如:url = git@github.com:xxx/xxx.git

Git clone

error: RPC failed; HTTP 504 curl 22 The requested URL returned error: 504 Gateway Time-out

fatal: The remote end hung up unexpectedly

1
$ git clone --depth=1 https://git.xxxxxx/xxxxxx.git 

参考

  1. 廖雪峰Git教程