0%

git 技巧

整理一些git常用的命令和一些骚操作~

git log

查看提交历史,默认不包含任何参数,或按照提交时间列出所有的更新,最新的排在上面。

查看提交的差异(diff)

可以用-p选项来展开每次提交的内容差异,用-2显示最近的两条更新:

1
git log -p -2

还可以使用—stat来简要显示增改的行数统计:

1
git log -p --stat

精简显示log

--pretty=<format>可以以给定的格式打印提交的日志。其中<format>可以是:

  • oneline
  • short
  • mediu
  • full
  • raw

查看某个文件的改动

可以在git log后面直接跟上文件名,来查看针对这个文件的改动(当前分支),加上-p显示具体改动:

1
git log -p file

如果该文件不在当前目录,需要先切换到目录的文件夹。

搜索

搜索git记录里面author包含zhang

1
git log --author zhang

搜索git记录提交说明message里面包含table的提交:

1
git log --grep table

只要满足任意条件即可显示出来:

1
git log --author zhang --grep table

同时满足两者才可显示:

1
git log --author zhang --grep table --all-match

git branch

本地分支跟踪远程分支

在本地创建分支,然后推送到远程,然后拉取的时候,会说本地分支没有跟踪远程分支,需要建立下连接:

1
git branch --set-upstream-to=origin/<branch> you-local-branch

查看某个提交属于哪个分支

有时候代码合并之后,忘记了需要去追踪这个提交在哪个分支上存在

1
git branch --contains commitID

git show

remote 远程库的操作

查看远程url

1
git remote show origin

显示远程库的源地址, 例如:

1
2
3
4
5
6
7
8
9
10
11
╰─$ git remote show origin 
* remote origin
Fetch URL: http://xxxxxxxxx.git
Push URL: http://xxxxxxxxx.git
HEAD branch: master
Remote branches:
master tracked
Local branches configured for 'git pull':
master merges with remote master
Local refs configured for 'git push':
master pushes to master (up to date)

可以列出当前库的远程url,以及本地分支和远程跟踪分支的状态。

或者可以直接简单的查看远程url:

1
git remote -v

输出:

1
2
3
╰─$ git remote -v
origin http://xxxxxxxxx.git (fetch)
origin http://xxxxxxxxx.git (push)

修剪远程已删除的分支

prune的意思是清理、修剪。有时候我们在远程上删除某些分支,但是在本地工程里,例如使用git checkout的时候还是会看到远程已删除的分支。

1
git remote prune

查看远程库里已经删除的分支:

1
git remote prune origin --dry-run

注:后面带着参数dry-run是为了只列出,不删除

如果要列出并删除,那么不带dry-run参数即可:

1
git remote prune origin

修改远程的url

1
git remote set-url origin new-url

比如我们的git是用ssh拉取的,但是ssh太慢了,需要换成http的,那我们只需要:

1
git remote set-url origin http://xxxxxxxxx.git

然后查看换了的url:

1
git remote -v

ok~