Git 基础

Workspace:工作区
Index/Stage:暂存区,也叫索引
Repository:仓库区(或本地仓库),也存储库
Remote:远程仓库

先克隆一个远程仓库用于学习,三选一:

git clone https://github.com/schacon/simplegit-progit

git clone git://github.com/sitaramc/gitolite

git clone http://git.oschina.net/yiibai/git-start.git

初始配置

设置用户名称:
git config --global user.name ''

设置邮件地址:
git config --global user.email <>

对特定项目使用不同的用户名称与邮件地址,在该项目目录中运行:
git config user.name ''
git config user.email

查看配置信息:
git config --list

查看某项配置:
git config <key>

编辑Git配置文件:
git config -e [--global]

中文显示:
git config --global core.quotepath false

获取帮助

man <verb>

创建仓库

1)  在现有目录中初始化仓库

git init

该命令将创建一个名为 .git 的子目录,这个子目录含有初始化的 Git 仓库中所有的必须文件;

2)  克隆远程仓库

git clone[url]、gitclone [url] <本地名>

克隆时更改远程仓库名:

git clone -o <远程仓库名> [url]

查看状态

git status
git status –s
git status --short

结果:

  1. ??- 未被跟踪
  2. M- 被修改,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。
  3. A- 新添加到暂存区
  4. D- 被删除
  5. R- 重命名

忽略文件

创建一个名为 .gitignore 的文件。GitHub 有一个十分详细的针对数十种项目及语言的.gitignore 文件列表,你可以在https://github.com/github/gitignore找到它.

文件 .gitignore 的格式规范如下:

·        所有空行或者以 # 开头的行都会被 Git 忽略。

·        可以使用标准的 glob 模式匹配。

·        匹配模式可以以(/)开头防止递归。

·        匹配模式可以以(/)结尾指定目录。

·        要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个字符 a,要么匹配一个字符 b,要么匹配一个字符 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配 a/z, a/b/z 或 a/b/c/z等。

添加内容到下一次提交中

git add

这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。

查看变化

查看修改后尚未暂存的文件的变化:
git diff

查看已经暂存文件的变化:
git diff --staged

git diff --cached

提交前找出空白错误(指行尾的空格、Tab 制表符,和行首空格后跟 Tab 制表符的行为):
git diff --check

通过图形化的方式或其它格式显示变化:
git difftool

显示该文件每次提交的diff:
git log -p <filename>

比较同一文件不同版本之间的差异:
git diff <commit_id1> <commit_id2> <file>

提交更新

git commit

#将所做的改变的 diff 输出放到编辑器中从而使你知道本次提交具体做了哪些修改
git commit –v

#将提交信息与命令放在同一行
git commit –m '修改信息'

#对于已经跟踪的文件可以跳过暂存直接提交
git commit –a

gitcommit –am '修改信息'

注释规范

1)  用一空行分隔标题与正文。

2)  标题使用大写字母。

3)  标题不超过50个字符。

4)  标题使用祈使语气。

5)  标题不要使用句号结尾。

6)  正文在72个字符处换行。

7)  正文解释是什么和为什么,而不是如何做。

撤销修改

实质是用版本库里的版本替换工作区的版本

git checkout -- <file>

从磁盘中删除文件

git rm

删除已经修改过的文件
git rm -f

#删除 log/ 目录下扩展名为 .log 的所有文件
gitrm log/\*.log

覆盖上一次的提交

#暂存区没有文件时只是修改提交信息
git commit --amend

#提交未暂存的文件
git commit --amend -a -m

修改提交历史

git commit --amend(暂存区没有文件时只是修改提交信息,修正会改变提交的 SHA-1 校验和,它类似于一个小的变基 - 如果已经推送了最后一次提交就不要修正它。)

git commit --amend -a -m(提交未暂存的文件)

git rebase -i HEAD~3

重命名

git mv <file_from> <file_to>

查看标签

查看标签:
git tag,git tag -l ' '

附注标签:
git tag -a v1.4 -m ' ' 

查看标签信息与对应的提交信息:
git show v1.4

轻量标签:
git tag v1.4-lw

后期打标签:
git tag -a v1.2 -m ' ' <校验和(或部分校验和)>

共享标签,默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上:
git push <远程仓库> v1.5

一次性推送很多标签:
git push <远程仓库> --tags

检出标签:
git checkout -b <branchname> <tagname>

别名

#git ci 等同于git commit
git config --global alias.ci commit

#gitunstage fileA 等同于git reset DEAD -- fileA
git config --global alias.unstage 'reset HEAD --'

外部命令,在命令前加 “!”

git config --global alias.visual '!gitk'
#设置git lg显示方式
git config --global alias.lg "log--color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s%Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值