目录
[1.在 Windows 上安装](#1.在 Windows 上安装)
[1.管理 Git 仓库中的远程仓库](#1.管理 Git 仓库中的远程仓库)
一.安装及配置
1.在 Windows 上安装
msysGit 的项目提供了安装包,可以到 GitHub 的页面上下载 exe 安装文件并运行:
http://msysgit.github.com/
2.用户信息
配置个人的用户名称和电子邮件地址。
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
如果用 --global
选项,更改的是位于用户主目录下的配置文件,以后所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global
选项重新配置即可,新的设定保存在当前项目的 .git/config
文件里。
•查看配置信息
要检查已有的配置信息,可以使用 git config --list
命令:
$ git config --list
user.name=Scott Chacon
user.email=schacon@gmail.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...
也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可。
$ git config user.name
Scott Chacon
3.差异分析工具
在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:
$ git config --global merge.tool vimdiff
二.基础
1.创建仓库
第1种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库。第2种是从已有的 Git 仓库克隆出一个新的镜像仓库来。
**•**在工作目录中初始化新仓库
$ git init
$ git add *.c
$ git add README
$ git commit -m 'initial project version'
•从现有仓库克隆
在当前目录下创建一个名为grit
的目录,其中包含一个 .git
的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的 grit
目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用。
$ git clone git://github.com/schacon/grit.git
如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/grit.git mygrit
要克隆Git仓库的指定分支
git clone -b <branch_name> --single-branch <repository_url>
2.提交与修改
•git status:查看仓库当前的状态,显示有变更的文件。
$ git status
On branch master
nothing to commit, working directory clean
•忽略某些文件
可以创建1个名为 .gitignore
的文件,列出要忽略的文件模式。来看一个实际的例子:
$ cat .gitignore
*.[oa]
*~
第1行告诉 Git 忽略所有以 .o
或 .a
结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的,我们用不着跟踪它们的版本。
第2行告诉 Git 忽略所有以波浪符(~
)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。
文件 .gitignore
的格式规范如下:
|--------------------------------------|
| 1. 所有空行或者以注释符号 #
开头的行都会被 Git 忽略 |
| 2.可以使用标准的 glob 模式匹配 |
| 3.匹配模式最后跟反斜杠(/
)说明要忽略的是目录 |
| 4.要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!
)取反 |
再看一个 .gitignore
文件的例子:
# 忽略所有 .a 结尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目录下的所有文件
build/
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
# ignore all .txt files in the doc/ directory
doc/**/*.txt
•git add . :添加文件到暂存区。
git add .gitignore
•git diff:比较文件的不同,即暂存区和工作区的差异。
•git commit:提交更新。
git commit -m [message]
[message] 可以是一些备注信息。
•git rm :删除文件。
python
#从暂存区和工作区中删除 1.txt 文件
git rm 1.txt
#强制删除选项 -f
git rm -f 1.txt
•git mv :移动或重命名一个文件、目录或软连接。
python
git mv [file] [newfile]
3.查看提交历史
•git log :查看历史提交记录。
python
git log [选项] [分支名/提交哈希]
常用的选项包括:
|-----------------|-----------------|
| -p
| 显示提交的补丁(具体更改内容) |
| --since=<时间>
| 只显示指定时间之后的提交 |
| --until=<时间>
| 只显示指定时间之前的提交 |
| --author=<作者>
| 只显示特定作者的提交 |
| --grep=<模式>
| 只显示包含指定模式的提交消息 |
•git blame <file> :以列表形式查看指定文件的历史修改记录。
python
git blame [选项] <文件路径>
常用的选项包括:
|--------------------|-----------------------|
| -L <起始行号>,<结束行号>
| 只显示指定行号范围内的代码注释 |
| -C
| 对于重命名或拷贝的代码行,也进行代码行溯源 |
| -M
| 对于移动的代码行,也进行代码行溯源 |
| --show-stats
| 显示包含每个作者的行数统计信息 |
三.分支管理
1.创建分支
•创建新分支并切换到该分支
python
git checkout -b <branchname>
•切换分支命令
python
git checkout (branchname)
•查看分支
python
#查看所有分支
git branch
#查看远程分支
git branch -r
#查看所有本地和远程分支
git branch -a
2.合并分支
•将其他分支合并到当前分支。
python
git merge <branchname>
•解决合并冲突
当合并过程中出现冲突时,Git 会标记冲突文件,你需要手动解决冲突。
打开冲突文件,按照标记解决冲突。
标记冲突解决完成:
python
git add <conflict-file>
#提交合并结果
git commit
•删除分支
python
#删除本地分支
git branch -d <branchname>
#强制删除未合并的分支
git branch -D <branchname>
#删除远程分支
git push origin --delete <branchname>
四.远程操作
1.管理 Git 仓库中的远程仓库
•git remote :提供一些用于查看、添加、重命名和删除远程仓库的功能。
|----------------------------------------------|-----------------------------------------|
| git remote
| 列出当前仓库中已配置的远程仓库 |
| git remote add <remote_name> <remote_url>
| 添加一个新的远程仓库。指定一个远程仓库的名称和 URL,将其添加到当前仓库中。 |
| git remote rename <old_name> <new_name>
| 将已配置的远程仓库重命名 |
| git remote remove <remote_name>
| 从当前仓库中删除指定的远程仓库 |
| git remote set-url <remote_name> <new_url>
| 修改指定远程仓库的 URL |
| git remote show <remote_name>
| 显示指定远程仓库的详细信息,包括 URL 和跟踪分支 |
| git remote -v
| 列出当前仓库中已配置的远程仓库,并显示它们的 URL |
2.数据的获取与推送
•git fetch :命令用于从远程获取代码库。
python
#想要提取更新的数据
git fetch [alias]
#将服务器上的任何更新(假设有人这时候推送到服务器了)合并到你的当前分支
git merge [alias]/[branch]
•git pull 命令用于从远程获取代码并合并本地的版本。其实就是 git fetch 和 git merge 的简写,先从远程仓库获取最新的提交记录,然后将这些提交记录合并到你当前的分支中。
python
#将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并
git pull origin master:brantest
#如果远程分支是与当前分支合并,则冒号后面的部分可以省略
git pull origin master
•git push: 命令用于从将本地的分支版本上传到远程并合并。
python
git push <远程主机名> <本地分支名>:<远程分支名>
五.标签
下面是1个综合示例,演示如何创建、查看、推送和删除标签。
1.创建轻量标签和附注标签
python
git tag v1.0
git tag -a v1.1 -m "runoob.com标签"
2.查看标签和标签信息
python
git tag
git show v1.1
3.推送标签到远程仓库
python
git push origin v1.0
git push origin v1.1
git push origin --tags # 推送所有标签
4.删除标签
python
#本地删除
git tag -d v1.0
#远程删除
git push origin --delete v1.0