一、window下的git安装

1.安装教程

网上教程一堆,我参考的是这个:Git_Windows 系统下Git安装图解

还有这个也不错

2.环境搭建:

在配置完成后,自动加载到系统环境变量中,如我的是:D:\Program Files\Git\cmd

3.配置本地git及生成公钥

安装好Msysgit后,就可以开始配置开发环境了,可以双击Git桌面图标,进入shell后配置name和email,给定一个默认的配置。然后生成公钥:

ssh-keygen.exe -C "your@email.address" -t rsa

这样就可以在你的用户下取得需要的公钥匙,公钥位于你的电脑中“C:\Documents and Settings\Airen.ssh”的“id_rsa.pub”文件下,用记事本打开然后复制下来。

4.设置Github帐号的Public Key

登陆github.Com 网站,在SSH Public Keys 设置你的SSH Public Keys,然后创建SSH keys将复制的id_ras.pub中公钥粘贴进去,保存即可。

通过这一系列的操作就能够对自己的项目的服务中就可以进行git的相关操作了。

二、推荐与介绍

最终我更加推荐再阅读以下几篇博客:

Git与Repo入门

它介绍了版本控制的历史,从原始的版本控制(即原型-备份-复制-修改-备份-再创建-……然后归为一类,完全手动,就像修改word文档一样。)

过渡到本地版本控制

手工管理比较麻烦且混乱,所以出现了本地版本控制系统,记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件。比如RCS。

本地版本控制主要针对个人,为了能够满足团队协作,于是就出现了集中版本控制比如Subversion,Perforce。

集中式版本控制也出现很多问题,比如必须联网才能更新和提交,不联网则不行,也不能看到历史版本,且数据都保存在服务器上。

于是出现了分布式版本控制,如GIT,Mercurial。不是复制指定版本的快照,而是把所有的版本信息仓库全部同步到本地,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,所以,只要有一个用户的设备没有问题就可以恢复所有的数据。

如果比较分布式版本控制(以Git为代表)和集中式版本控制(以Subversion为代表)最大的区别是什么??

在这篇博客学一点Git--20分钟git快速上手中讲解的很清楚,就是就是不用服务器的svn。

学一点Git--20分钟git快速上手这篇博客很好的比较了git和svn,对于像我一样的新手来说实为珍宝,慢慢咀嚼。

三、git基本操作

1.获取git仓库
书上说两种方法,一是在本地目录文件中:用:git init初始化创建仓库。

E:\>mkdir gitdemo

E:\>cd gitdemo

E:\gitdemo>git init
Initialized empty Git repository in E:/gitdemo/.git/

第二种就是克隆远程目录将远程服务器上的仓库完全镜像一份至本地,而不是取某一个特定版本,所以用clone而不是checkout:git clone

E:\knowcars>git clone git@github.com:BeginMan/knowcar.git
Cloning into 'knowcar'...
The authenticity of host 'github.com (192.30.252.130)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.252.130' (RSA) to the list of know
n hosts.
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done

基本格式:git clone git@github.com:你的github帐号名称/你的项目名称.git。

通过上面的两种操作,我们打开文件查看,根目录下都含有.git的文件夹,大多数都隐藏起来了,可通过设置显示隐藏的文件、文件夹和驱动器选项显示隐藏文件。.git文件夹含有项目的配置、记录信息等.

2.GIT中版本的保存

与SVN的区别
Git与你熟悉的大部分版本控制系统的差别是很大的。也许你熟悉Subversion、CVS、Perforce、Mercurial 等等,他们使用 “增量文件系统” (Delta Storage systems), 就是说它们存储每次提交(commit)之间的差异。Git正好与之相反,它会把你的每次提交的文件的全部内容(snapshot)都会记录下来。这会是在使用Git时的一个很重要的理念。

这里可以参考GIT对象模型来理解。

四、GIT文件操作

在我极力推荐的这篇博客中:Here就已经将git的原理讲解的很好了,版本控制归根结底就是对文件的操作,要把文件分门别类,对不同的类别有不同的处理方式。

git文件状态才是理解git原理的基石。所以一定要搞清楚GIT的三个工作区域:本地数据(仓库)目录,工作目录,暂存区;要对已跟踪状态(tracked),和未跟踪状态(untracked)有明确的判定和熟练的处理。

注意一点的是:

已跟踪文件都是从git directory取出来的文件的某一个版本或新跟踪的文件。所以当我们无中生有一个文件的时候,它只是未跟踪状态的,我们可以用

git add <file>  #来跟踪文件
git status #来查看当前工作目录的状态呢?哪些文件已被暂存?有哪些未跟踪的文件?哪些文件被修改了?
git reset HEAD <file> #取消暂存文件
git checkout --<file> #取消未暂存状态的文件的修改,返回到暂存或者已经提交的状态;

查看文件修改后的差异:

git diff [<filename>]   查看未暂存文件的修改;
git diff --cache    查看已暂存状态的文件的修改;
git diff --staged   效果同上,在git1.6.1以上版本可用。

如下:

---a:表示修改之前的文件

+++b:表示修改之后的文件

上图表示在fileb的第一行后添加了一行"bb",原来文件的第一行扩展为了修改后的1、2行。

注意:git diff显示的是文件修改后还没有暂存起来的内容,看已暂存的内容使用 git diff --cached即可。

/dev/null表示之前没有提交过这一个文件,这是将是第一次提交。

git初体验(一)基础的更多相关文章

  1. git初体验(三)git分支

    分支的理念就是分身,就像孙悟空拔出猴毛变出很多跟自己一模一样的猴子,然后每个猴子做自己的事情互不干涉,等到所有猴子做完之后,猴子集合来合并劳动成果,然后悟空就把那些猴子猴孙门统统收回了. 你创建了一个 ...

  2. git初体验(二)基础git文件操作

    文件操作续 忽略一些文件 只需在主目录下建立".gitignore"文件,注意新建的是文件而非文件夹,在win窗口中不能建立以.开头的文件,只能在dos下: E:\knowcars ...

  3. Git:Git初体验——Git安装配置

    作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...

  4. git初体验(七)多账户的使用

    多github帐号的SSH key切换 我有两个github帐号,一个是个人所用,一个是为公司项目所用.如果是单用户(single-user),很方便,默认拿id_rsa与你的github服务器的公钥 ...

  5. git初体验(六)git配置

    一.基本配置 看这篇Git 基本配置其实就解决很多问题了. 二.客户端配置 1.git bash 粘贴与编辑 在git bash客户端头部右键,现在属性,然后把"快速编辑模式勾选即可&quo ...

  6. git初体验(五)SSH的理解

    一.SSH SSH是Secure shell的缩写,即"安全外壳协议",专为远程登录会话和其他网络服务提供安全性的协议,是一项计算机上的安全协议. 传统的网络服务程序,如rsh.F ...

  7. git初体验(四)git标签

    1.git 标题(tag) 关于git标签的描述,参考这里 2.标题管理 创建: 切换到需要打标签的分支上,如: git checkout master git tag v1.0 # 默认标签是打在最 ...

  8. Git 初体验

    第一次接触git的时候,一直在纳闷git和github的区别,解释下,git是版本管理工具,github是开源共享平台,个人这么理解,理解这么多就行了 先说git吧,下载git客户端,地址:http: ...

  9. Git初体验

    http://www.cnblogs.com/yejiurui/archive/2013/07/29/3223153.html

随机推荐

  1. 烈焰SWF解密

    SWF 解密 是用UE编辑器 改 SWF开头 的AA AA AA ,改成43 57 53 就解密了

  2. Js实现简单的省市级联的效果

    需要注意的是当需要动态添加项的时候一定要先var newoption=new Option("项","值");然后再 select.options.add(ne ...

  3. http协议(二)请求和响应报文的构成

    http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...

  4. java多线程系类:基础篇:07线程休眠

    概要 本章,会对Thread中sleep()方法进行介绍.涉及到的内容包括:1. sleep()介绍2. sleep()示例3. sleep() 与 wait()的比较 转载请注明出处:http:// ...

  5. Windows 8.1 新增控件之 CommandBar

    上一篇为大家介绍了AppBar 的相关内容,本篇继续介绍CommandBar 的使用方法.与AppBar 相比而言,CommandBar 在开发使用方面较为单一,在按键布局上分为主控区(Primary ...

  6. distributed caching for .net applications

    distributed caching for .net applications fast, scalable distributed caching with meaningful perform ...

  7. expect的爱恨情仇

    背景 openvpn生成证书想把它做成一键化,这样添加新用户时候就方便 遇到的问题 我的代码 gg_vpn_keys.exp #!/usr/bin/expect set user [lindex $a ...

  8. Alpha版本项目展示要求

    Alpha版本展示的时间暂定为11月17日课上.如有变动,另行通知. 在Alpha阶段项目评审会上, 每个团队有12分钟展示时间,10分钟问答和机动时间,我们的展示也不需要PPT,大家把要展现的东西写 ...

  9. Infer.net 开源组件: 1, 机器学习入门,要从贝叶斯说起

    我的入门方式,先从应用现象中,总结规律反推本质.一头扎进理论书籍是不对的. 老外的先进,还是体现在传承方面.没办法,我们竞争压力大,有好东西藏着掖着.大家都苦逼 我最开始是从介绍,有了基本概念,见xx ...

  10. grootjs 简明教程

    grootJs简明教程 mvvm框架也是解决的一类问题,在某些时候会提高生产效率: 经过接近一个月的努力,grootJs测试版终于发布了 grootJs是一个mvvm的框架,名字取 grass 和ro ...