一、概述
1、Git介绍
- Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
- Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
- Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
2、版本控制
版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。
本地版本控制
复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。
集中化的版本控制系统
集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS),诸如 CVS、Subversion 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。
分布式版本控制系统
分布式版本控制系统(Distributed Version Control System,简称 DVCS),例如 Git、Mercurial、Bazaar 以及 Darcs 。客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。
二、下载安装
1、windows
下载地址:https://gitforwindows.org/
下载之后默认安装,傻瓜式下一步。
检查是否安装成功
开始菜单或者桌面右键菜单,找到"Git Bash"选项。点击打开,如图所示:
2、Linux
首先看看系统中是否有Git:
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
没有Git则需要安装
Debian/Ubuntu
输入命令:
sudo apt-get install git
或者
$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
libz-dev libssl-dev
$ apt-get install git
$ git --version
git version 1.8.1.2
Centos/RedHat
输入命令:
$ sudo yum install git
或者
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ yum -y install git-core
$ git --version
git version 1.7.1
3、Git配置
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
git的配置信息存放位置:
- /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
- ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
- 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
配置用户信息
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
查看配置信息
$ git config --list
http.postbuffer=2M
user.name=runoob
user.email=test@runoob.com
三、常用命令
1、git init
在当前目录下初始化一个仓库。将创建一个名为 .git
的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干。
2、git status
查看当前仓库的状态。
状态简览:
使用 git status -s
命令或 git status --short
命令,获取更为紧凑的格式输出
$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
新添加的未跟踪文件前面有 ??
标记,新添加到暂存区中的文件前面有 A
标记,修改过的文件前面有 M
标记。
M
有两个可以出现的位置,出现在右边的 M
表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M
表示该文件被修改了并放入了暂存区。
3、git add 文件名
使git跟踪一个文件,即把内容放到下一个提交的暂存区。例如在仓库中修改、删除、新增等变更操作,需要将对应的文件add到暂存区,下次提交的时候将被提交到仓库中。
4、git commit -m "message"
提交。message表示提交时需要带上提交的备注。
如果没有-m "message",会启动文本编辑器以便输入本次提交的说明。
跳过使用暂存区域:git commit -a -m "message"
5、git log
可以查看所有产生的 commit 记录
-p
,用来显示每次提交的内容差异
-2
来仅显示最近两次提交
6、git branch
git init 初始化git仓库之后会默认生成一个主分支 master 。
(1)执行 git branch查看当前分支
(2)新建分支a: git branch a 。这时候分支 a 跟分支 master 是一模一样的内容
此时所在仍是主分支,需要切换到分支a上:git checkout a
*新建和切换一部到位:git checkout -b a
(3)合并分支:git merge。第一步是切换到 master 分支,如果你已经在了就不用切换了,第二步执行 git merge a ,意思就是把a分支的代码合并过来
(4)删除分支:git branch -d a 。删除分支a
强制删除a分支:git branch -D a 。有些时候可能会删除失败,比如如果a分支的代码还没有合并到master,你执行 git branch -d a 是删除不了的,它会智能的提示你a分支还有未合并的代码