Git的简单使用
Git的简单使用
众所周知,Git官方给的定义是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。那么要学习Git我们就应该知道什么是版本控制。
版本控制
开发的时候,一般情况我们并不能一次就完成项目,而是会一次又一次的修改源代码,这样就形成了一个又一个迭代的版本,有时候可能我们并不满意最新的修改版本,而需要退回上一个版本,这时候就需要版本控制工具的帮助。版本控制简而言之就是对开发过程中各种改动的记录,备份以及恢复。
版本控制多用于多人开发,是多人协调开发必不可缺的一个工具!
常见的版本控制工具
主流的版本控制工具有以下几种:
- Git
- SVN
- CVS
- VSS
- TFS
版本控制分类
1.本地版本控制
记录文件每次的更新,可以对每个版本做记录,也可以是打一个补丁,适合用于个人。
2.集中版本控制SVN
所有版本数据都存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。
所有的版本都在服务器上,所以查看修改历史版本都需要联网,而且因为只放在一个服务器上,那么服务器损坏也就会失去所有数据,因此使用的时候通常会使用备份服务。代表产品:SVN,CVS,VSS等
3.分布式版本控制Git
所有版本信息仓库都同步到本地每个用户,这样就能离线查看版本历史。用户只需在本地提交更新,在有网络时push到对应服务器或者用户那里即可。这样牺牲一定的储存空间来保证每个用户都有所有版本历史的备份,只要有一个用户设备完好就能恢复所有数据。
Git环境配置
软件下载
在官网选择对应系统版本安装:git-scm.com/download/wi…(速度较慢)
建议使用镜像下载:npmmirror.com/package/git
Mac也可用brew install git
来安装
软件安装
无脑下一步即可,安装位置建议放在自己的文件夹
如遇不可使用,可能时候未添加环境变量导致的
基本的Linux命令
cd 改变目录
cd . . 回退到上层目录
pwd 显示当前所在的目录路径
ls(ll) 列出当前文件夹下的所有文件
touch 新建一个文件
rm 删除一个文件
mkdir 新建一个文件夹
rm -r删除一个文件夹
clear 清屏
history 历史命令
exit 退出
# 是注释
更多命令可关注程序员编程录公众号,输入备忘手册获取,非推广!!!!只是宝藏资源分享
Git配置
查看配置git config -l
设置全局名git config --global user.name "rain-zyt"
设置全局邮箱git config -- global user.email "rain-zyt@zhm.com"
#该邮箱仅作为身份识别,无需填真实
Git的项目搭建
常用指令
git pull
本地与服务器端同步
git fetch
相当于是从远程获取最新版本到本地,不会自动merge
git clone git://github.com/schacon/grit.git
从服务器上将代码给拉下来
git push (远程仓库名) (分支名)
将本地分支推送到服务器上
git checkout dev
切换到本地dev分支
git add [file name]
添加一个文件到git index
git commit -a
提交当前repos的所有的改变
本地仓库搭建
1、创建全新的仓库,在需要Git管理的项目的根目录下执行:
# 在当前目录新建一个Git代码库
$ git init
2、执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。
克隆远程仓库
1、另一种方式是克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地!
# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]
更多git命令,可在github.com/rain-zyt/re…下载
Git文件操作
文件的四种状态
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。
- Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
- Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
- Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !
- Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
查看文件的状态
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
git add . #添加所有文件到暂存区
git commit -m "消息内容" #提交暂存区中的内容到本地仓库 -m 提交信息
忽略文件
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
- 忽略文件中的空行或以井号(#)开始的行将会被忽略。
- 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
- 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
- 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
- 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
#为注释
*.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt #但lib.txt除外
/temp #仅忽略项目根目录下的TODO文件,不包括其它目录
tempbuild/ #忽略build/目录下的所有文件
doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
参考资料
CodeSheep微信公众号
转载自:https://juejin.cn/post/7048607900549251103