Git操作整理

基础操作

查看全局配置信息

1
git config --list

设置全局配置信息

1
git config --global user.name "wwyz"

初始化本地仓库

1
git init

将文件加入git版本库

1
git add "文件名"

拉取代码

1
git clone "版本库地址" "目录名"

查看文件状态

1
git status

提交代码

1
2
git commit "说明"
git commit --amend # 重新提交

移除文件,移除后文件不在被版本控制

1
2
git rm
git rm --cached readme.txt #缓存中移除

移动文件

1
git mv "文件路径" "目标文件路径"

查看提交文件历史

1
2
git log
git log -p -2 #-p选项展开显示每次提交的内容差异,用-2则仅显示最近的两次更新

查看远程仓库

1
2
3
4
5
6
7
git remote -v
# 添加远程仓库
git remote add pb git://github.com/paulboone/ticgit.git
# 拉取远程代码更新
git fetch pb
# 查看远程仓库的信息
git remote show origin

推送提交的代码

1
git push origin master

忽略文件

通过在项目根目录配置.gitignore文件忽略要忽略的文件/文件夹。
Java项目一般忽略:.idea、target、out、classes
前端项目一般忽略:.idea、node_modules、dist
.gitignore 格式规范如下:

  1. 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
  2. 可以使用标准的 glob(shell 所使用的简化了的正则表达式)模式匹配。
  3. 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
  4. 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
1
2
*.[oa]  # 忽略所有以 .o 或 .a 结尾的文件
*~ # 忽略所有以波浪符(~)结尾的文件

Tag打标签

对某一时间点上的版本打上标签,通常结合版本使用。Git 使用的标签有两种类型:轻量级的(lightweight)和含附注的(annotated)。轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。一般我们都建议使用含附注型的标签,以便保留相关信息;当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。

列出已有标签
1
git tag

分支

使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快。

什么是分支

在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。

新建分支

1
git branch "分支名"

切换分支

1
git checkout "分支名"

合并分支

1
2
# 将其他分支合并到本分支
git merge "分支名"

分支变基

1
2
3
4
5
git rebase
# 将多次提交合并为一次提交,-i表示弹出交互式的界面让用户编辑完成合并操作
git rebase -i "开始提交点" "结束提交点"
# 将某一段commit粘贴到另一个分支上
git rebase "开始提交点" "结束提交点" --onto "分支名称"

Git官方文档

Git教程-廖雪峰