git 入门教程之本地仓库
本地仓库
背景
创建工作目录
平时工作时我们习惯对文档分门别类进行管理,.doc
.txt
等文本类型的文件习惯存在 doc
文件下,开发java
js
等源代码文件存在在 src
目录下,这一点很好理解,那么讲解 git的项目我们也要创建一个文件夹,姑且新建一个demo
的文件夹吧!
# 在工作空间创建指定目录
mkdir demo
# 切换至工作目录
cd demo
创建本地仓库
既然已经创建了工作文件夹,那么我们自然是希望该文件下的所有文件都能被 git
管理,也就是说在当前文件下的创建新文件,修改原文件内容或者删除文件等操作都能纳入版本控制中,不然为什么要用git
呢?
下面这个命令就是告诉git
这个 demo
目录要纳入版本控制了.
# 初始化本地仓库
git init
一旦运行git init
命令,细心的读者可能会发现在原来的 demo
目录下多了.git
隐藏文件,正因如此,原来被我们称为工作目录的 demo
才能纳入版本控制,我们将.git
目录称之为版本库.
由于当前项目 demo
只在我们自己电脑上,其他人无法访问,所以我们称这种形式的版本库为本地仓库.
添加文件到版本库
首先明确的是,所有的版本控制系统只能追踪文本文件的改动,文本文件就是平常熟悉的.txt
.html
.js
.css
.java
.xml
等等文件,非文本文件的其他格式有哪些?
例如二进制文件,像我们平时听音乐的.mp3
,看视频的.mp4
,浏览图片的.png
等这些都是二进制文件,需要专门的软件才能正常打开,不信的话,你用记事本看看能不能打开视频?
了解文本文件和二进制文件的区别,那是不是说二进制文件没法进行版本控制了,刚才你不是还说demo
目录下的所有文件吗?这不是自相矛盾吗!
非也非也,git
当然也能够管理二进制文件,对于文本文件的追踪,可以细粒度到哪个文件在哪一行发生了哪些变化,而二进制文件只能粗粒度知道哪个文件变化了,并不知道具体变化.
不幸的是,Microsoft
的Word
格式是二进制格式,因此,版本控制系统是没法跟踪Word
文件的改动的,前面我们举的例子只是为了演示,如果要真正使用版本控制系统,就要以纯文本方式编写文件.
因为文本是有编码的,比如中文有常用的GBK
编码,日文有Shift_JIS
编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8
编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持.
言归正传,现在我们在demo
目录下创建一个test.txt
演示文件,内容如下git test
# 创建新文件
touch test.txt
# 编辑新文件,输入 git test
echo "git test" > test.txt
接下来我们还需要两步操作才能将test.txt
纳入git
管理:
第一步,使用git add <file>
命令将文件添加到本地仓库:
# 添加到本地仓库: 第一步指定要添加的文件
git add test.txt
第二步,使用git commit -m <message>
命令将文件提交到本地仓库:
# 添加到本地仓库: 第二步指定添加文件备注
git commit -m "add test.txt"
经过上述两步操作,test.txt
文件已经纳入到版本控制中了,这里你可能会有疑问了为什么需要add
commit
两步呢?
因为commit
可以一次性提交很多文件,所以你可以多次add
不同的文件,比如:
# 创建三个文件file1.txt file2.txt file3.txt
touch file1.txt file2.txt file3.txt
# 添加一个文件file1.txt
git add file1.txt
# 添加两个文件file2.txt file3.txt
git add file2.txt file3.txt
# 一次性提交全部文件
git commit -m "add 3 files."
小结
- 初始化本地仓库
git init
- 添加文件到本地仓库分两步
git add <file>
和git commit -m <message>
- 实际工作中,大致以下流程
# 在工作空间创建指定目录
mkdir demo
# 切换至工作目录
cd demo
# 初始化本地仓库
git init
# 创建新文件
touch test.txt
# 编辑新文件,输入 git test
echo "git test" > test.txt
# 添加到本地仓库: 第一步指定要添加的文件
git add test.txt
# 添加到本地仓库: 第二步指定添加文件备注
git commit -m "add test.txt"
...
# 继续编辑目标文件,追加 git init
echo "git init" >> test.txt
# 将目标文件添加到本地仓库
git add test.txt
# 添加本次新增文件的备注
git commit -m "add git init"
原文请访问 https://snowdreams1006.github.io/git/usage/local-repository.html
git 入门教程之本地仓库的更多相关文章
- git 入门教程之本地和远程仓库的本质
本地仓库和远程仓库在本质上没有太大区别,只不过一个是本地电脑,一个是远程电脑. 远程仓库不一定非得是 github 那种专门的"中央服务器",甚至局域网的另外一台电脑也可以充当&q ...
- git 入门教程之远程仓库
远程仓库 如果说本地仓库已经足够个人进行版本控制了,那么远程仓库则使多人合作开发成为可能. 如果你只是打算自己使用git,你的工作内容不需要发布给其他人看,那就用不到远程仓库的概念. git 是分布式 ...
- git 入门教程
git 入门教程之协同开发 前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协 ...
- Git入门教程,详解Git文件的四大状态
大家好,欢迎来到周一git专题. git clone 在上一篇文章当中我们聊了怎么在github当中创建一个属于自己的项目(repository),简称repo.除了建立自己的repo之外,我们更多的 ...
- 廖雪峰Git入门教程
廖雪峰Git入门教程 2018-05-24 23:05:11 0 0 0 https://www.liaoxuefeng.com/wiki/00137395163059296 ...
- git 入门教程之协同开发
前面我们已经介绍过远程仓库的相关概念,不过那时并没有深入探讨,只是讲解了如何创建远程仓库以及推送最新工作成果到远程仓库,实际上远程仓库对于团队协同开发很重要,不仅仅是团队协同开发的基础,也是代码备份的 ...
- NO.A.0002——Git简史及安装教程/创建本地仓库/提交项目到本地仓库/误删还原
一.Git简史及同类产品对比: 1.git简史: 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linu ...
- GitHub教程(三) 本地仓库托管到GitHub
本文开头先特别声明一下:由于GitHub教程属于Git系列教程的GitHub子篇章,因此GitHub教程中将不再详细介绍Git操作命令及其用法,我会根据实际需要穿插着回顾Git操作命令.如果读者需要学 ...
- git学习笔记04-将本地仓库添加到GitHub远程仓库-git比svn先进的地方
第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步. 如果没有,打开Shel ...
随机推荐
- 运维笔记--docker odoo镜像 运行异常处理
场景描述: 镜像来源,dockerhub odoo官方镜像:https://hub.docker.com/_/odoo odoo镜像运行一段时间后,出现下述异常,可能是触发某个未知bug:该现象在生产 ...
- tensorflow 1.0 学习:参数初始化(initializer)
CNN中最重要的就是参数了,包括W,b. 我们训练CNN的最终目的就是得到最好的参数,使得目标函数取得最小值.参数的初始化也同样重要,因此微调受到很多人的重视,那么tf提供了哪些初始化参数的方法呢,我 ...
- mysql 开发进阶篇系列 10 锁问题 (相同索引键值或同一行或间隙锁的冲突)
1.使用相同索引键值的冲突 由于mysql 的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但如果是使用相同的索引键,是会出现锁冲突的.设计时要注意 例如:city表city_ ...
- 第二次作业:分布式版本控制系统Git的安装与使用
本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103 第一个git仓库地址:https://github.com/ ...
- 向上造型中让我入坑的地方 (><)
今天周六,闲着蛋疼就报名参加了公司的一个java比赛,比赛地点某某大厦11楼会议室,想象中应该是能容纳上百人的超大会议室.没成想,到地方一看,只是一个能容纳六七人的有圆形会议桌的小会议室.不过这仍然不 ...
- Perl正则表达式超详细教程
前言 想必学习perl的人,对基础正则表达式都已经熟悉,所以学习perl正则会很轻松.这里我不打算解释基础正则的内容,而是直接介绍基础正则中不具备的但perl支持的功能.关于基础正则表达式的内容,可参 ...
- [转]node-sass 安装失败的各种坑
本文转自:https://blog.csdn.net/weixin_42406046/article/details/80604623?tdsourcetag=s_pctim_aiomsg 版权声明: ...
- 在CentOS中部署.Net Core2.1网站
作为一个刚接触linux的新手,在安装环境的时候,折腾了不少时间,写下一篇总结帖,帮助下新人吧~ 做完后再回来看步骤,也很简单,也就以下几步: 1.安装.Net Core环境 2.安装nginx实现端 ...
- Python网络编程Socket之协程
一.服务端 __author__ = "Jent Zhang" import socket import gevent from gevent import monkey monk ...
- 【转】为什么要使用ModelDriven
---恢复内容开始--- package cn.com.leadfar.struts2.actions; public class User { private int id ; private St ...