Git 一些常用命令。
Git常用命令
- 获得版本库
git initgit clone
- 版本管理
git addgit commitgit rm
- 查看信息
git helpgit loggit diff
- 远程协作
git pullgit push
git log查看提交记录
git log -3,查看最近三条的提交记录
git log --pretty=oneline ,以单行的形式查看提交记录
git log --pretty=format:"%h - %an,%ar : %s",以特定格式显示提交记录
Git的提交id(commit id)是一个摘要值,这个摘要值实际上是用sha1计算出来的。
git checkout -- 文件名/文件夹名,丢弃提交
对于user.name与user.email来说,有3个地方可以设置
/etc/gitconfig(几乎不会使用,如果使用的是Xcode自带的git的话这个目录是不存在的,需要手动创建),git config --system~/.gitconfig(很常用),git config --global- 针对特定项目的,
.git/config文件中,git config --local
上面三个设置,优先级由上到下递减,也就是说在3中配置了,会屏蔽掉1,2的配置。
git config --local user.name '张三'
git config --local user.email '123@abc.com'
查看文档:git help config git config --help man git-config git config
git config user.name:查看用户名
git config user.email:查看用户邮箱
注意:git rm与rm
git mv,rename
git add --all <==> git add .
提交描述信息写错了,需要修改,使用git commit --amend -m "修正msg"
#gitignore
.gitignore文件需要手动创建,将需要忽略的文件名放在这个文件中,支持增则表达式。
一些栗子:
要忽略项目目录下的test.xcodeproject文件,将文件名写入即可。
忽略项目目录下所有的.xcodeproject工程文件,则*.xcodeproject。
!a.xcodeproject,a.xcodeproject这个工程文件不忽略。
*.c#忽略所有以.c为后缀的文件!lib.c#但是lib.c除外/TODO#仅仅忽略项目根目录下的TODO文件,不包括subdir/TODObuild/#忽略build目录下的所有文件doc/*.txt#会忽略doc/notes.txt,但不会忽略doc/server/arch.txt/*/test.txt,忽略根目录下第一级子目录下的test.txt文件/**/test.txt,忽略根目录下所有子目录里的test.txt文件
分支branch
查看当前分支:git branch
新建分支:git branch new_branch
切换分支:git checkout new_branch
快捷切换回上一次的分支:git checkout -,这个和cd -类似
删除分支:git branch -d new_branch
删除分支常见错误:
1. 删除当前正处于的分支
1 | error: 无法删除检出于 '/Users/hanoi_ahoj/mtgit' 的分支 'new_branch'。 |
2. 删除一个没有合并的分支
1 | error: 分支 'new_branch' 没有完全合并。 |
合并分支:git merge new_branch
HEAD
HEAD指向的是当前分支
(HEAD保存在.git目录下的HEAD文件里,cat HEAD看一看)
master
master本质上指向提交
- HEAD指向当前分支

新建一个分支:dev

在dev分支上进行了一次commit

fast-forward(即快进,快速合并,没有冲突)

如果两个分支修改的同一个文件的同一行,在合并的时候Git是不知道以master为准还是别的分支为准,这时就会提示冲突,这个时候看这个文件的内容就会发现里面的内容被Git用自己的方式标注出来了冲突的地方,需要自己手动处理冲突。解决完后使用
git add file_name来告诉Git这个冲突已经解决了。当在master分支中解决了这一个冲突后,在dev分支中再进行合并master分支,就不会提示冲突了,而是fast-forward。
Mac/Linux下一些小技巧
优秀的工具:oh my zsh
拷贝文件cp,移动文件mv(也用来重命名)
当不想输入当前命令,可以使用ctrl+c
rm -rf 文件夹名,递归的删除文件夹
ctrl+l,相当于clear,清屏幕
ctrl+a,跳到当前命令的开头,ctrl+e,跳到当前命令的结尾
l,相当于ls -al,显示当前目录下所有文件,包括隐藏文件
ctrl+f,向下翻页,ctrl+b,向上翻页
mkdir -p test/test1/test2,递归建立多个目录
快速切换回上次的文件夹:cd -
同时执行多条命令:mkdir mydir && cd mydir
.代表当前目录,..代表上一级目录