Git笔记

25个 Git 进阶技巧
Git常用命令备忘

命令及技巧

git log查看提交记录

1
2
3
4
git log git log <file> # 查看该文件每次提交记录 
git log -p <file> # 查看每次详细修改内容的
git log -p -2 # 查看最近两次详细修改内容的
git log --stat # 查看提交统计信息

git reflog查看被撤消的提交

1
2
#恢复
git reset --hard [hash]

git stash暂存

git stash用好很强大

1
2
3
4
5
git stash #暂存修改,注意要先git add
git stash apply #应用暂存修改
git stash pop #应用暂存修改并删除
git stah list #查看暂存的修改
git stash apply [stash@{0}] #应用指定的暂存修改

提交

git commit --amend 添加到最后一次提交

推送远程

正常情况下push

1
git push origin master

第一次可以推送并关联默认分支

1
git push -u origin master

这样以后每次就可以只用通过git push来推送了

如果需要进行code review, 需要改成下面这样

1
git push origin HEAD:refs/for/master

refs/for/master需要经过code review之后才可以提交;refs/heads/master不需要code review

远程更新

在pull代码的时候,最好加上–rebase

1
git pull --rebase

因为git pull –rebase因为se这个命令做了以下内容:

  • 把你 commit 到本地仓库的内容,取出来放到暂存区(stash)(这时你的工作区是干净的,这样就不会产生冲突啦)
  • 然后从远端拉取代码到本地,由于工作区是干净的,所以不会有冲突
  • 从暂存区把你之前提交的内容取出来,跟拉下来的代码合并

git blame查看某一行代码的修改历史

通过以下方法查看文件中每行的最近个性

1
git blame file_name

结果如:

1
0584cb5 (tory 2018-03-01 23:14:43 +0800  2) apply from: "config.gradle"

然后通过git show commitID 查看历史

或者:

在Android Studio中右键文件行号部分,选择Annotate

git cherry-pick

git cherry-pick用于把另一个本地分支的commit修改应用到当前分支。

git cherry-pick简介

移除某文件夹的版本控制

bin目录为例,如果bin已经被加入到

先添加到.gitignore里面

1
bin/

预览要删除的文件

1
git rm -r -n --cached "bin/"

执行命令:

1
git rm -r --cached  "bin/"

提交并推送到远程

1
2
git commit -m "remove bin folder all file out of control"    //提交
git push origin master //提交到远程服务器

分支管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#查看分支
#查看本地分支
git branch
#查看远程分支
git branch -r
#查看本地和远程分支
git branch -a

#创建分支
git branch 分支名
#切换
git checkout 分支名
#创建+切换分支
git checkout -b 分支名

#删除分支
git branch -d 分支名

基本配置

配置

设置Git的user nameemail

1
2
$ git config --global user.name "xxx"
$ git config --global user.email "xxx@xxx.com"

初始化项目:

1
git init

SSH Keys

生成ssh key:

1
ssh-keygen

~/.ssh/id_rsa.pub中把公钥复制到githubssh key的配置项中

添加后,在终端(Terminal)中输入以下内容,测试与github的连接是否正常

1
ssh -T git@github.com

oschina的则是输入以下内容:

1
ssh -T git@git.oschina.net

关联远程仓库

使用下面的bash命令,将Http方式的项目改成为SSH方式

关联添加远程地址

1
git remote add origin "你项目的的ssh地址"

重新设置远程地址

1
2
cd "你项目的目录文件夹"
git remote set-url origin "你项目的的ssh地址"

设置commit模板

在主目录下新建commit.template文件,填入以下内容

1
2
BUG ID: ALHWWY-XXXX or none
DESCRIPTION: 修复xxx模块的xxx错误

然后设置提交模板

1
2
git config  --global commit.template ~/commit.template
git config --global core.editor vim #设置提交commit message的默认编辑器

Shadowscoks代理

1
2
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'

查看配置信息

system(系统级别)->global(用户级别,也就是所有仓库)->local(当前仓库)

1
2
3
4
5
6
7
8
#查看系统config
git config --system --list

#查看当前用户(global)配置
git config --global --list

#查看当前仓库配置信息(需要在仓库中使用)
git config --local --list

.gitignore

GitHub官方的所有.gitignore文件
https://github.com/github/gitignore