这么多年了,一直用svn管理代码,Git接触的太少,这么强大的代码管理工具怎么能不学习呢
Git是什么
Git是目前世界上最先进的分布式版本控制系统
那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余。 在学习 Git 时,请尽量理清你对其它版本管理系统已有的认识,如 CVS、Subversion 或 Perforce, 这样能帮助你使用工具时避免发生混淆。尽管 Git 用起来与其它的版本控制系统非常相似, 但它在对信息的存储和认知方式上却有很大差异,理解这些差异将有助与避免使用中的困惑。
直接记录快照,而非差异比较 Git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 Git 对待数据的方法。
从概念上来说,其它大部分系统以文件变更列表的方式存储信息,这类系统(CVS、Subversion、Perforce、Bazaar 等等)
将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异 (它们通常称作 基于差异(delta-based) 的版本控制)。
Git 一般只添加数据
你执行的 Git 操作,几乎只往 Git 数据库中 添加 数据。 你很难让 Git 执行任何不可逆操作,或者让它以任何方式清除数据。 同别的 VCS 一样,未提交更新时有可能丢失或弄乱修改的内容。但是一旦你提交快照到 Git 中, 就难以再丢失数据,特别是如果你定期的推送数据库到其它仓库的话。这使得我们使用 Git 成为一个安心愉悦的过程,因为我们深知可以尽情做各种尝试,而没有把事情弄糟的危险。 更深度探讨 Git
如何保存数据及恢复丢失数据的话题,请参考撤消操作。三种状态 现在请注意,如果你希望后面的学习更顺利,请记住下面这些关于 Git 的概念。 Git 有三种状态,你的文件可能处于其中之一:
已提交(committed)、已修改(modified) 和 已暂存(staged)。已修改表示修改了文件,但还没保存到数据库中。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。
工作区、暂存区以及 Git 目录。 Figure 6. 工作目录、暂存区域以及 Git 仓库. 工作区是对项目的某个版本独立提取出来的内容。
这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。 按照 Git
的术语叫做“索引”,不过一般说法还是叫“暂存区”。Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git
中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。基本的 Git 工作流程如下:
在工作区中修改文件。
将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录
Git环境安装
Git环境搭建去官网下载安装包,进行操作即可
这个是其他博主整理的安装文档
https://www.cnblogs.com/zhangyaolan/p/11105330.html
Git与GitHub的关系
1Git是一款免费、开源的分布式版本控制系统
2 Github是用Git做版本控制的代码托管平台
Git分支介绍
git 分支创建、修改、删除、切换的命令
//查看分支 或者 创建分支
git branch 分支名
//修改分支名
git branch -m 分支名
//切换分支
git checkout 分支名
//创建并切换分支
git checkout -b 分支名\
//删除分支
git branch -d 分支名
//
实例
1.创建本地分支
git branch 分支名
例如:git branch gitfenzhi
注:gitfenzhi是分支名称,可以随便定义。
2.切换本地分支
git checkout 分支名
例如从master切换到分支:git checkout gitfenzhi
3.远程分支就是本地分支push到服务器上。
比如master就是一个最典型的远程分支(默认)。
git push origin gitfenzhi
4.远程分支和本地分支需要区分好,
所以,在从服务器上拉取特定分支的时候,需要指定远程分支的名字。
git checkout --track origin/gitfenzhi
注意该命令由于带有–track参数,所以要求git1.6.4以上!这样git会自动切换到分支。
5.提交分支数据到远程服务器
git push origin <local_branch_name>:<remote_branch_name>
例如:
git push origin gitfenzhi:gitfenzhi
一般当前如果不在该分支时,使用这种方式提交。如果当前在 gitfenzhi 分支下,也可以直接提交
git push
6.删除远程分支
git push origin :develop
1,从已有的分支创建新的分支(如从master分支),创建一个dev分支
Git checkout -b dev
2,创建完可以查看一下,分支已经切换到dev
git branch * dev master
3,提交该分支到远程仓库
git push origin dev
4,测试从远程获取dev
git pull origin dev
或者:
如果用命令行,运行 git fetch,可以将远程分支信息获取到本地,再运行 git checkout -b local-branchname origin/remote_branchname 就可以将远程分支映射到本地命名为local-branchname 的一分支
5,我觉得现在重要的就是设置git push,pull默认的提交获取分支,这样就很方便的使用git push 提交信息或git pull获取信息
git branch --set-upstream-to=origin/dev
取消对master的跟踪
git branch --unset-upstream master
6,现在随便修改一下工程文件的内容,然后git commit ,git push,之后就可以直接提交到远程的dev分支中,而不会是master
Git怎么管理代码
Git的命令
1新建文件夹
在d:盘新建文件夹中
2在文件夹中初始git
初始化文件git目录
创建git仓库
git init 仓库名
初始化
git init
3.向仓库中添加文件
命令
添加文件夹
git status ./ 查看这个文件夹下的文件状态,会列出有哪些没有加入追踪,哪些没有commit
git add ./* 把这个文件下的所有应该加入追踪的,加入到暂存区
git commit -m "日志描述" ./ 把这个文件夹下可以commit的,都commit到本地库
git push push到远程库
添加文件
git status ./ 查看这个文件夹下的文件状态,会列出有哪些没有加入追踪,哪些没有commit
git add test.java 把这个文件加入追踪的,加入到暂存区
git commit -m "日志描述" ./ 把这个文件夹下可以commit的,都commit到本地库
git push push到远程库
Git使用的软件工具
1 SourceTree
2.原始git
Git实际项目操作
…以后…