目录
一、简介
1、Git 与 SVN 区别
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
Git 与 SVN 区别点:
Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等最核心的区别。
Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn .cvs 等的文件夹里。
Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
2、什么是Git
Git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖于网络和中心服务器。
3、关于版本控制
什么是版本控制?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本文所展示的例子中,我们仅对保存着软件源代码的文本文件作版本控制管理,但实际上,你可以对任何类型的文件进行版本控制。
我们用word写文档会遇到一下问题:
1、想删除一个段落,又怕将来想恢复找不回,然后把文件另存为,最后在windwos下生成好多的文档。
2、过段时间想找回被删除的文字,已经不知道删除前保存在哪个文件
3、想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删
4、有些文档需要别人帮助填写,你传给同事以后,你又更新了文档,然后同事填完文件又传给了你,怎么去合并文档。
采用版本控制系统就可以解决上面遇到的所有问题。它可以统一进行版本控制,自动帮我们记录每次文件的改动,进行代码合并,不需要把文件传来传去,如果想查看某次改动,只需要在软件里瞄一眼就可以。
有了版本控制你就可以将某个文件回滚到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而导致出现怪异问题,又是谁在何时报告了某个功能缺陷等等。使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改,删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。
4、git内文件的三种状态
对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。
已提交表示该文件已经被安全地保存在本地数据库中了;
已修改表示修改了某个文件,但还没有提升保存;
已暂存表示把已修改的文件放在下次提交要保存的清单中。
由此我们看到Git管理项目时,文件流转的三个工作区域:Git的工作目录,暂存区域,以及本地仓库。
- 工作目录:
从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 Git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。所以工作目录就是写代码的地方,如果有新增、修改、删除文件都是在工作目录发生变化。工作目录的文件可以通过git add 命令将文件提交到暂存区。
- 暂存区:
所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中的index文件(.git/index)中。有时候我们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。暂存区就是用来临时存储代码的一片区域,是已经修改了但是还没有提交,将来可以提交到本地库也可以撤回来。通过git commit 命令可以将暂存区的文件提交到本地仓库。
- 本地库
每个项目都有一个 Git 目录(注:如果 git clone 出来的话,就是其中 .git 的目录;如果git clone –bare 的话,新建的目录本身就是 Git 目录。),它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。本地库就是存储的实实在在的历史版本,可以通过git push命令来将本地库的文件推送到服务器。
5、Git工作流程:
1.在工作目录中修改某些文件。
2.对修改后的文件进行快照,然后保存到暂存区域。
3.提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
所以,我们可以从文件所处的位置来判断状态:如果是 Git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
已提交(committed):表示数据文件已经顺利提交到Git版本库中。
已修改(modified):表示数据文件已经被修改,但未被保存到Git版本库中。
已暂存(staged):表示数据文件已经被修改,并会在下次提交时提交到Git版本库中。
二、Git基础命令
1、git配置文件
1.1、git的配置文件位置
针对所有用户:/etc/gitconfig
针对当前用户: ~/.gitconfig
1.2、查看配置git config –list
git config --list
1.3、修改配置文件
针对所有用户:/etc/gitconfig
针对当前用户: ~/.gitconfig
2、git基础命令
2.1、clone现有仓库
git clone URL
2.2、查看git仓库中各文件的状态
git status
2.3、初始化仓库
git init
注:如果 git clone 出来的话,就是其中 .git 的目录;如果git clone –bare 的话,新建的目录本身就是 Git 目录。
2.4、追加文件(将文件追加到暂存区)
git add aaa.txt
2.5、取消暂存
git reset aaa.txt
2.6、删除文件
从git仓库和磁盘上删除文件
git rm aaa.txt (当前目录中删除了test.c,在git仓库中暂时删除了test.c,相当于staged状态)
从git仓库中删除test.c
git commit -m "my message" (git仓库以后不再维护test.c)
回滚刚刚的删除操作
git reset HEAD aaa.txt (恢复到删除前的状态,当前目录中已删除的test.c也恢复了,test.c仍文commited状态)
仅从git仓库中删除文件
git rm --cache aaa.txt (当前目录中没有删除了test.c,仅在git仓库中暂时删除了test.c,相当于staged状态)
git远程仓库
1、查看远程仓库
git remote -v
2、新建远程仓库
git remote add [shortname] [url]
3、修改远程仓库
git remote rename [oldnanme] [newname]
4、删除远程仓库
git remote rm [remote-name]
5、拉取数据
git pull
6、推送数据
git push [remote-name] [branch-name]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/22223.html