一、什么是Git
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。与常用的版本控制工具 CVS, Subversion 等不同,Git采用了分布式版本库的方式,不必服务器端软件支持。
二、Git的发展历史
Git起源于Linux社区。Linux最初是由BitMover公司开发的商业收费的BitKeeper分布式版本控制系统所管理源代码。BitMover公司免费授权Linux社区使用BitKeeper,从2002年起,Linux开始使用BitKeeper分布式版本控制系统管理源代码,但有一天Linux社区成员Andrew试图破解BitKeeper共享给所有人使用,于是BitMover公司收回了Bitkeeper的版权。于是Linus就根据使用Bitkeeper的经验用两周的时间写出了Git,也就是目前为止最好用的分布式版本控制系统。Github就只使用Git系统来管理网站。
三、分布式和集中式
GIt是分布式版本管理系统,与之对应的是集中式管理系统,典型的比如svn、cvs等。它们的区别在于集中式系统在写代码时需要从服务器中拉取,这样做的劣势是当服务器丢失或损坏,项目也随之丢失。并且你的所有对项目的操作都需要连接服务器。
分布式与之相比的最大优势就在于,当你从主仓库拉取一份代码下来后,会在你的电脑里创建一个本地仓库,你可以自由在本地回滚,提交,当你想把自己的代码提交到主仓库时,只需要将本地仓库合并推送到主仓库即可。
集中式存在一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,没有固定的版本号,但是有一个由哈希算法算出的id,同时也有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。
四、配置Git
Linux安装Git
Linux下直接在终端输入一下命令即可安装Git
sudo apt install git
windows安装Git
在 Windows 上安装 Git可以直接使用安装程序。最新的官方的build版本可在 Git 网站上下载。只需转到Git - Downloading Package,下载将自动开始。
配置git环境:git config --global
config:参数是用来配置git环境的
--global:长命令表示配置整个git环境
初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码
用户名配置
user代表用户,.name代表配置用户的名称
git config --global user.name "你的用户名"
邮箱配置
user代表用户,.email代表配置用户的邮箱
git config --global user.email "你的邮箱"
不配置也行,当遇到要求登录权限的远程仓库会让你在手动输入用户名、邮箱、以及密码
五、Git相关操作
创建本地空仓库:git init
init:初始化当前目录为仓库,初始化后会自动将当前仓库设置为master
创建本地仓库的条件是需要一个空目录,然后在空目录中初始化你的项目。初始化后会生成git的配置文件目录,普通的"ls"命令是看不到的,我们需要使用ls -ah查看隐藏目录进入目录后可以看到它的相关配置文件。
git init
克隆现有存储库:git clone
如果你想获取现有 Git 存储库的副本——例如,你想贡献的项目——你需要的命令是git clone
. 使用clone克隆存储库git clone <url>可以直接在本地创建相同的仓库
。
git clone <url>
新建文件添加到本地仓库:git add、git commit -m
add:将文件添加到缓存区
commit:提交到本地仓库
使用git add命令可以将文件添加到本地仓库的提交缓存,但这个时候还不算添加到了本地仓库,我们还需要使用git commit命令为其添加修改的描述信息。注意在使用git commit时我们只需要简单描述一下我们做了什么,不要像写注释那样写一大堆。我们需要使用-m命令来简写描述我们的信息。
git commit -m "first commit"
同步到远程仓库:git push
使用git push命令可以将本地仓库提交到远程仓库。
git push
改写提交:git commit --amend
--amend:重写上一次的提交信息
如果我们提交了仓库,却发现注释写错了,我们可以使用 --amend长命令选项来改写提交。
git commit --amend
查看历史提交日志:git log
log:查看日志
我们可以使用git log查看一下提交日志
git log
回滚代码仓库:git reset --hard
reset参数是重置命令
--hard是重置代码仓库版本
有三种模式
--soft 、--mixed以及--hard是三个恢复等级。
使用--soft就仅仅将头指针恢复,已经add的暂存区以及工作空间的所有东西都不变。
如果使用--mixed,就将头恢复掉,已经add的暂存区也会丢失掉,工作空间的代码什么的是不变的。
如果使用--hard,那么一切就全都恢复了,头变,aad的暂存区消失,代码什么的也恢复到以前状态。
git reset --hard
查看提交之后文件是否做了改动:git status
status:查看当前仓库状态
我们在提交完成之后,有时候可能自己不小心改动了某个文件,或者别人,我们可以使用git status查看文件是否被改动。
git status
删除文件:git rm
如果我们使用普通的命令,rm删除文件,git状态会提示你删除了文件,你只需要使用add重新提交一次就可以了。当然你也可以使用git rm删除文件,但是也需要使用git commit提交一次
git rm
git创建分支:git branch、git checkout
使用git checkout -b参数来创建一个分支,创建完成分支后会自动切换过去
git checkout -b dev
然后我们在使用branch来查看当前属于哪个分支,也就是查看HEAD的指向
git branch
git合并分支:git merge
当我们新建分支并做完工作之后,想要把分支提交至master,只需要切换到master仓库,并执行git merge 分支名就可以了
git merge
git查看分支:git branch -a
如果要查看当前所有分支可以使用:git branch -a
git删除本地分支:git branch -D
git branch -D 分支名
git删除远程分支:git push origin --delete
注意这里的远程分支名不需要加origin,输入分支名就可以了
git push origin --delete 远程分支名