- 安装git,
sudo apt-get install git - 创建版本库:选择一个文件夹 ,
git init - 把文件添加到版本库:
git add 文件名
git commit -m “文件修改描述” - 查看版本记录
git log 版本回退
git reset –hard + Commit ID
git reset –hard HEAD^
说明:Commit ID 就是版本号,的一个非常大的数字,用十六进制表示
HEAD指的是当前版本,^指的是上一个版本,^^指的是上上个版本,以此类推,若要回退到前100个版本,可用HEAD~100
hard 的含义:下次再写查看当前状态
git status- 查看修改内容
git diff - 查看操作记录
git reflog
以下总结自《Pro Git》 一书
git基本使用
git配置
`git config` 命令用来读取和写入环境变量,环境变量会存在特定的配置文件中 环境变量分为3级,系统,用户,仓库。命令 | 影响的配置文件 | 作用域 |
---|---|---|
git config –system | /etc/gitconfig | 系统全局 |
git config –global | ~/.gitconfig | 当前用户 |
git config | .git/config | 当前仓库 |
[user]
name = loufand
email = loufand@139.com
常用的配置命令
git config --global user.name "loufand"
设置用户名git config --global user.email "loufand@139.com"
设置用户名邮箱git config core.editor emacs
设置编辑器git config --list
列出全部变量git config <key>
列出指定的变量
建立git仓库
git init
建立一个空的仓库,即在当前目录下建立.git文件夹git clone <path>
克隆已有仓库
git文件操作
git add <file/folder>
跟踪新文件,添加修改到下一次提交中。如果参数是文件夹,会递归跟踪所有文件夹下的文件。git commit
将当前暂存区中的修改提交到版本库中。该操作会根据core.editor打开指定的编辑器,在编辑器中输入本次提交的说明,退出编辑器后git会丢掉#开头的注释行,然后生成一次提交。git commit -m <msg>
在-m 后直接输入提交信息,不进入编辑器编辑了。git commit -a
跳过add阶段,直接将所有跟踪的文件提交。git rm <file>
让git停止跟踪某个文件,并将其工作区中删除,此命令相当于一次修改,需要commit才能在版本库中删除该文件。git rm --cached <file>
让git停止跟踪某个文件。但是不在工作区中删除它。git mv <srcfile> <targetfile>
移动文件,也可以实现改名。git reset HEAD <file>
撤销暂存。文件提交到暂存区,该命令可以将暂存区的文件修改删除。但是不会修改工作目录中的文件。git reset HEAD --hard <file>
撤销暂存,同时也会修改工作目录中的文件。git checkout --<file>
撤销工作目录中做的修改,将指定的文件变为上次add到暂存区的样子
git查看修改
git status
查看当前git中文件的状态git status -s
以简单形式查看状态。
状态标记 | 含义 |
---|---|
?? | 未跟踪文件 |
A | 新添加到暂存区的文件 |
右边的M | 文件被修改但还没有放入暂存区 |
左边的M | 文件被修改并且已经放入暂存区 |
git diff
查看文件具体修改了哪些行 注意该命令只显示在工作区中尚未暂存的改动。而不是上次提交以来所做的所有改动,当把工作区中的修改暂存后该命令就什么都不显示了。git diff --staged
查看已经暂存的改动。git log
查看提交日志
git忽略文件
我们总会有一些文件无需让git管理,也不想让它们出现在未跟踪列表中,比如编译生成的二进制文件,日志文件,一些配置文件。
我们可以在仓库中建立一个.gitignore
文件来告诉git要忽略那些文件。
.gitignore文件格式规范
- #为注释标记
- 可以使用glob模式匹配
- 可以以(/)开头以防止递归
- 可以以(/)结尾指定目录
- 在文件名前加(!)可以取消忽略
glob模式指的是shell使用的一种简化的正则表达式
符号 | 含义 |
---|---|
* | 零或多个任意字符 |
** | 匹配任意中间目录 |
[abc] | 匹配[]中的任意一个字符 |
[0-9] | 匹配0到9中的任意一个字符 |
? | 匹配一个任意字符 |