Git分布式版本控制工具
下载地址: Git下载地址
Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。
到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。
常用的Git代码托管服务
前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。
- gitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名gitHub
- 码云是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
- GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
配置账户信息
git config --global user.email "邮箱"
git config --global user.name "用户名"
查看配置信息
配置信息会保存在
~/.gitconfig
文件中
-
git config --list
:查看所有配置信息 -
git config user.name
:查看用户名称
获取Git仓库
[方式一]:在本地初始化一个Git仓库
git init
[方式二]:从远程仓库克隆
git clone 仓库url
本地仓库操作
-
git status
:查看文件状态- untracked 未跟踪(未被纳入版本控制)
- tracked 已跟踪(被纳入版本控制)
- Unmodified 未修改状态
- Modified 已修改状态
- Staged 已暂存状态
-
git status –s
:使输出信息更加简洁 -
git add 文件名
:将指定文件加入暂存区 -
git add .
:将所有文件加入暂存区 -
git reset 文件名
:将指定文件从暂存区取消 -
git commit -m "提交日志"
:将暂存区的文件修改提交到本地仓库 -
git rm 文件名
:删除指定文件(删除后提交生效) -
git log
:查看日志记录
配置忽略区域
首先需要创建一个
.gitignore
的文件,在里面编写一些配置信息
#忽略.a结尾的所有文件
*.a
#不忽略lib.a文件
!lib.a
#忽略当前目录下的TODO文件
/TODO
#忽略build目录下的所有文件都忽略
build/
#doc目录下所有以.txt结尾的文件都忽略
doc/*.txt
#doc目录包含其子目录下所有.pdf文件都忽略
doc/**/*.pdf
远程仓库操作
-
git remote -v
:查看远程仓库 -
git remote add <shortname> <url>
:添加一个新的远程Git仓库 -
git clone <url>
:从远程仓库克隆 -
git remote rm <shortname>
:移除远程仓库 -
git fetch <shortname> <branch>
:是从远程仓库获取最新版本到本地仓库,不会自动merge -
git pull <shortname> <branch>
:是从远程仓库获取最新版本并merge到本地仓库- 如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在
git pull
命令后加入参数--allow-unrelated-histories
- 如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错(fatal: refusing to merge unrelated histories ),解决此问题可以在
-
git git push <shortname> <branch>
:推送到远程仓库
Git分支操作
-
git branch
:列出所有本地分支 -
git branch -r
:列出所有远程分支 -
git branch -a
:列出所有本地分支和远程分支 -
git checkout <branch>
:切换分支 -
git push <shortname> <branch>
:推送至远程仓库分支 -
git merge <branch>
:合并当前使用的分支和命令指定的分支- 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行
git add
命令来标识冲突已解决
- 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没办法合并它们,同时会提示文件冲突。此时需要我们打开冲突的文件并修复冲突内容,最后执行
-
git branch -d <branch>
:删除分支- 如果要删除的分支中进行了一些开发动作,此时执行上面的删除命令并不会删除分支
-
git branch -D <branch>
:强制删除分支 -
git push origin –d <branch>
:删除远程仓库中的分支
网友评论