Git,一个神奇而又陌生的东西,居然到现在才去了解它,就像有一位仁兄说的,现在不会用Git真的都不好意思说自己搞IT的。

简单的讲,这Git是目前最先进的分布式版本控制系统,和他相对应的就是众所周知的SVN(一个集中化版本控制系统)。

集中化的版本控制系统(Centralized Version Control Systems,简称 CVCS),比如 CVS、Subversion(SVN) 以及 Perforce 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

多年以来,这已成为版本控制系统的标准做法。这种做法带来了许多好处,特别是相较于老式的本地 VCS 来说。 现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

事分两面,有好有坏。 这么做最显而易见的缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。

本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

为了解决集中化版本控制系统所存在问题,分布式版本控制系统(Distributed Version Control System,简称 DVCS)面世了。 在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。 这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

同样,提及到Git,不的不说一下GitHub,感觉很多人都把他们想象成为一种东西,其实不然,GitHub是一个基于Git的代码托管平台,用于托管各种Git库,并提供一个可视化操作界面(https://www.github.com),用户可以通过Git客户端(http://git-scm.com/download/win)将自己的代码上传至GitHub,看一个Git博文时,有位仁兄还提道其他在线托管网站(http://www.bitbucket.com、 http://www.git.oschina.net),后者相对于其他两个优势是:国内的,访问速度较快,支持公共和私有项目。

具体介绍

上手操作:

1.注册账户

我们主要目的是将自己的项目寄存于到一个托管平台,那么对于这个平台就需要一个凭证,即用户名密码,去GitHub.com注册即可。

2.安装客户端

GitHub是服务端,要想在自己电脑上使用Git我们还需要一个Git客户端,我这里选用MsysGit(http://git-scm.com/download/win),这个只是提供了Git的核心功能,而且是基于命令行的。如果想要图形界面的话只要在MsysGit的基础上安装TortoiseGit(https://code.google.com/p/tortoisegit/ )即可。

3.配置Git

新建一个项目目录,在当前目录下右键,选择Git GUI Here,创建文件目录,这时,创建文件目录下会有一个.git的文件,即表示创建完成;

右键,Git Bash Here, 输入:$ ssh-keygen -t rsa -C "账户名(邮箱)",然后会要求确认路径和输入密码,我们这使用默认的一路回车就行;

右键,Git GUI Here,会看到一个可视化的窗口,Help选项,Show SSH Key,复制里面的Key值文本;

打开GitHub.com,登录后,选择Settings,选择SSH Key,在右侧添加新Key,将刚才复制的内容,粘贴到此处就可以了,Title随便起,为了让你区分其他Key值代表什么;

为了验证是否成功,右键,Git Bash Here,输入:$ ssh -T git@github.com,如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。

接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

打开Git Bash Here,输入:

  $ git config --global user.name "your name"
  $ git config --global user.email "your_email@youremail.com"

进入要上传的仓库,右键,Git Bash Here,添加远程地址:

  $ git remote add origin git@github.com:yourName/yourRepo.git

后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。

4.提交上传

在本地仓库添加一个新文件,比如Readme,右键,Git Bash Here,输入:

  $ git add README

  $ git commit -m "first commit"

  $ git push origin master

git push命令会将本地仓库推送到远程服务器。

git pull命令则相反。

修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。

5.一般问题:

仓库中的文件可能存在于这三种状态:

  1)Untracked files → 文件未被跟踪;
  2)Changes to be committed → 文件已暂存,这是下次提交的内容;
  3) Changes bu not updated → 文件被修改,但并没有添加到暂存区。

针对我遇到的第一个问题,解释一下在提交时,Untracked files出现往往都是文件名不正确,这列值得注意的是区分大小写,如果真实文件是Readme,那你写成readme就会提示该错误。

以上内容基本都是摘自各大Blogs,因为该类文章现在特别多,所以也不想去重复,因为自己是感兴趣,学着玩,不常用,特意整理一份,做备忘。

转自:

http://www.cnblogs.com/shuidao/p/3535299.html#!comments

https://wuyuans.com/2012/05/github-simple-tutorial/#toc-1

Git/GitHub 初用体验与总结的更多相关文章

  1. github初体验

    1.服务端 首先得有一个github账号 用户名和密码 2.客户端 github是服务端,要想在自己电脑上使用git我们还需要一个git客户端,我这里选用msysgit,这个只是提供了git的核心功能 ...

  2. GitHub初体验(小菜新手github用起来)

    记得自己刚认识github的时候觉得他好高端,只知道好多牛人托管代码在上面,但是还觉得离我好遥远.其实不然,用起来,哇塞,真强大. 如果你现在像我当时一样茫然,那希望我的分享能帮助到你.(记录自己用起 ...

  3. Git学习笔记(windows git之初体验)

    阿里国内镜像地址: https://npm.taobao.org/mirrors/git-for-windows/ 最近在学习廖雪峰老师关于git的教程,链接可以在我的首页找到.首先使用国内镜像下载并 ...

  4. github 初体验

    一.什么是 Github? github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开. Github 由Chris Wanstrath, ...

  5. Git&Github介绍

    git&github 什么是GIT 是一个源代码管理工具 源代码为什么要管理起来? 你写的东西就叫源代码,第三方的库和框架都不算. 让源代码可以被追溯,主要记录每次变更了什么,谁主导这次变化. ...

  6. Git+GitHub+SaltStack

    本文主要介绍日常工作中会经常使用到的一些工具软件. [ 01 ]SaltStack简明教程 [ 02 ]Git 中文教程 Git详解之一 Git起步 Git详解之二 Git基础  Git详解之三 Gi ...

  7. Git/Github使用方法小记

    今天把人间网的桌面客户端renjian-deck正式开源了,之前对javascript的了解其实非常的不够的,所以这一次的代码写的也是乱七八糟重用性及其低下,虽然我无数次的想把代码重新整理一下,不过还 ...

  8. 利用Typora+PicGo+OSS+Git+Github/码云搭建个人云笔记

    搭建个人云笔记 对于程序员来讲,使用markdown可以帮助我们快速地写作,书写出排版好看,颜值高的笔记,使用markdown来书写文档相比于使用word要简单快捷的多 市面上有很多markdown的 ...

  9. git &github 快速入门

    本节内容 github介绍 安装 仓库创建& 提交代码 代码回滚 工作区和暂存区 撤销修改 删除操作 远程仓库 分支管理 多人协作 github使用 忽略特殊文件.gitignore 1.gi ...

随机推荐

  1. Siteserver-stl:searchOutput(搜索结果)自定义显示样式

    stl:searchOutput 自定义显示样式 自定义搜索提交表单需要在<stl:searchOutput>中嵌入显示搜索结果的标签,必须包含的标签 有<stl:pageConte ...

  2. 谢欣伦 - OpenDev原创教程 - 串口类CxSerial

    这是一个精练的串口类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. 串口类CxSerial的使用如下(以某个叫做CSomeClass ...

  3. SharePoint Configuration Wizard - Unable to upgrade SharePoint Products and Technologies because an upgrade is already in progress

    故障描述 当要运行SharePonit Products and Technologies Configuration Wizard的时候,出现了如下图所示的错误提示. 错误信息为: Unable t ...

  4. Unity字节序问题

    问题 Unity中有些配置信息并不想在发布之后给其他人看到,所以在打包的时候进行了简单的编码处理,然后保存为.bytes类型,读取的时候再进行解码处理.今天遇到的很奇葩的问题是: 如果bytes文件U ...

  5. Unity Aspect

    Unity封装的东西太多,所以在很多情况下回忽略这些基本的事情.游戏窗口的中Aspect是通过Game窗口中进行选择,但对于相机的Aspect Unity并没有暴露接口在设置界面中,至少在编辑器下进行 ...

  6. web系统访问频率限制

    无论是spring mvc还是struts,都可以为controller或者aciton执行前,增加拦截器. 通过拦截器中的逻辑控制,可以实现访问频率的限制. 首先构造访问频率数据类 class Fr ...

  7. centos6.7安装Redis

    1.创建安装目录 mkdir /usr/local/redis cd /usr/local/src 2.获取安装包:wget http://download.redis.io/releases/red ...

  8. php识别中文编码并自动转换为UTF-8

    原文地址:http://www.codefans.net/articles/1272.shtml php自动识别编码,若里面有中文的话,将其转换为UTF-8就最好了,因为中文在Gbk编辑情况情况下,有 ...

  9. 6. support vector machine

    1. 了解SVM 1. Logistic regression 与SVM超平面 给定一些数据点,它们分别属于两个不同的类,现在要找到一个线性分类器把这些数据分成两类.如果用x表示数据点,用y表示类别( ...

  10. mac终端显示和隐藏隐藏文件的命令

    defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder //显示隐藏文件 defaults write ...