Git是目前世界上最先进的分布式版本控制系统,可以自动记录和管理文件的改动,还可以团队写作编辑,也就是帮助我们对不同的版本进行控制。2008年,GitHub网站上线,为开源项目提供免费存储,迅速发展成为最流行的分布式版本控制系统,没有之一。

安装Git

  windows下直接下载安装程序,然后默认安装即可,安装完成后通过Git Bash打开类似于命令行窗口的界面,则说明安装成功。

  安装成功后,需要添加自己的username和email,相当于表明身份,自报家门。

  1. $ git config --global user.name "username"
  2. $ git config --global user.email "your email"

创建版本库

  创建一个新的文件夹目录,然后进入到该目录,输入git init即可将次目录变为git可以管理的仓库。需要注意的是:git只支持文本文件,比如txt,代码,网页等,可以使用Notepad++编辑器,使用utf-8编码格式。

  将文件添加到仓库,分两步:添加和提交

  1. $ git add <file> 可以多次add,添加多个文件
  2. $ git commit -m <message>

时光机穿梭

  • 两个常用命令:掌握工作区的状态:git status,如果有文件被修改过,可以使用git diff查看修改内容
  • 版本回退:HEAD指向的是当前版本,HEAD^是上一个版本,在版本之间切换的命令是git reset --hard commit_id,穿梭前,可以使用git log查看提交历史,确定要回退到哪个版本;重返未来,可以通过git reflog查看命令历史,确定要回退的版本号。
  • 工作区和暂存区:工作区是在本地可以看到的仓库文件夹目录,而暂存区(stage)是版本库中的暂存区域,git add命令实际就是将要提交的修改先放到暂存区(stage),然后,执行git commit就可以一次性将暂存区的修改内容都提交到对应的分支。
![](https://img2018.cnblogs.com/blog/1608161/201904/1608161-20190409220505290-1750450610.png)
  • 管理修改:Git管理的是修改,而不是文件,只有add到暂存区的修改,才能使用commit提交。
  • 撤销修改:(1)如果想直接丢弃工作区的修改时,使用命令:git checkout -- file (2)当已经add到暂存区,想丢弃修改时,分为两步:先用命令git reset HEAD <file>,然后再用丢弃工作区内容的命令进行修改。(3)如果已经将修改commit到了版本库,可以进行版本回退来进行修改(前提是没有推送到远程库)。
  • 删除文件:要想删除一个文件,直接从工作区中删除文件,然后使用命令git rm <file>git commit -m <message>删除在版本库中的文件。
  • 文件恢复:如果误删了本地资源文件,可以使用命令git checkout -- <file>从版本库中恢复。

远程仓库

  Git是分布式版本控制系统,实际使用场景:有一台服务器,其他所有的用户都从这个服务器克隆一份到自己的电脑,然后把各自的提交推送到服务器仓库,也可以从服务器仓库拉取别人的提交。GitHub就是提供仓库托管服务的。

  • 添加SSH密钥:在github账户里添加自己电脑的ssh公钥
  • 添加远程库:在github网站创建新仓库create a new repo,然后在本地仓库下使用命令git remote add origin git@github.com:<name>/<github repo>.git将本地仓库与远程库进行关联。 在关联后,使用命令git push -u origin master第一次推送master分支的所有内容,此后,在每次本地提交时,可以使用git push origin master推送到远程库。这里需要注意:如果推送出错,原因是远程仓库的readme和本地不同步,可以先使用命令git pull --rebase origin master进行合并,然后再推送。
  • 从远程库克隆先创建远程库,然后克隆到本地进行操作。克隆命令:git clone git@github.com:<name>/<github repo>.git.

总结

  本文主要总结了git使用的本地仓库和远程仓库的主要操作命令,后续对git分支管理进行详细介绍。

参考链接

廖雪峰的官方网站

菜鸟教程

【Git教程】Git教程及使用命令的更多相关文章

  1. 廖老师git教程执行"git checkout -b dev origin/dev"命令报出:fatal: Cannot update paths and switch to branch 'dev' at the same time. Did you intend to checkout 'origin/dev' which can not be resolved as commit?问题解决

    在学习廖老师git教程之多人协作模块时按照老师的操作先创建了另一个目录,然后在这个目录下从GitHub上clone了 learngit目录到这个目录下,同样的执行了git branch查看分支情况,确 ...

  2. Git深入浅出使用教程:Git安装、远程控制、常用命令(全)

    一.软件安装 1.先安装[Git-2.24.1.2-64-bit.exe]软件.(官网下载的很慢,可以在百度云盘下载我的) 链接:https://pan.baidu.com/s/1uoIS9DWSBp ...

  3. Git使用详细教程(一)

    很久不发博客,最近有兴趣想写点东西,但 Live Writer 不支持从Word复制图片,疯狂吐槽下 Git使用详细教程(一) Git使用详细教程(二) 该教程主要是Git与IntelliJ IDEA ...

  4. Git初级实践教程(图文)

    关于Git Git的由来 Linux 的创始人 Linus Torvalds 在 2005 年开发了 Git 的原型程序.当时,由于在 Linux 内核开发中使用的既有版本管理系统的开发方许可证发生了 ...

  5. git github 使用教程

    参考文章:文章地址: http://wuyuans.com/2012/05/github-simple-tutorial/ github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般 ...

  6. git@osc使用教程

    http://my.oschina.net/openswc/blog/142321 Git初体验 http://my.oschina.net/dxqr/blog/134811 网友整理的git@osc ...

  7. Git 企业开发者教程

      为什么要写这样一个面向企业开发者的Git教程?这个问题也困扰我自己很久.其实我使用git的时间也不短了,但是就和正在阅读本文的每一位一样,常用的基本就是那么几个(git clone, git pu ...

  8. get最简单直接粗爆git与github教程

    Git是分布式版本控制系统(可以理解为文件管理拓展工具) github一个在线文件托管系统(可以理解为一个在线云盘) 准备工作,在git官网下载git软件件,安装git软件,以windows.为例,下 ...

  9. git 入门教程之 git 私服搭建教程

    git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...

  10. Git&GitHub-基础教程

    目录 1. Git简介 1.1 什么是版本控制系统? 1.2. Git的历史 1.3. 什么是分布式?什么是集中式? 2. Git安装 3. 创建一个版本库 4. Git的语法教程 4.1. 提交一个 ...

随机推荐

  1. Spring Cloud Stream(十三)

    说明 对Spring Boot 和 Spring Integration的整合,通过Spring Cloud Stream能够简化消息中间件使用的复杂难度!让业务人员更多的精力能够花在业务层面 简单例 ...

  2. 洛谷 P1602 Sramoc问题

    题目描述 话说员工们整理好了筷子之后,就准备将快餐送出了,但是一看订单,都傻眼了:订单上没有留电话号码,只写了一个sramoc(k,m)函数,这什么东西?什么意思?于是餐厅找来了资深顾问团的成员,YQ ...

  3. spring boot @Transactional事物处理

    spring boot 添加事物使用 @Transactional注解 简单使用 在启动类上方添加 @EnableTransactionManagement注解 使用时直接在类或者方法上使用 @Tra ...

  4. Macserver服务更新经常使用的几个shell命令

    Macserver须要先开启远程登录.开启方式:系统偏好设置->共享 勾选远程登录 经常使用命令有: 拷贝(把本机文件复制到远程server上) scp -r 本地路径/file userNam ...

  5. Mina airQQ聊天开门见山篇(一)

    Mina airQQ聊天开门见山篇(一) 近期项目可能要用到Mina,这个礼拜就在看这个框架,所以想写个小小的聊天的demo来巩固下,打算用几篇博客来记录下相关的知识 client用的是Flex Ai ...

  6. TCP三次握手及关闭时的2MSL分析

    TCP/IP三次握手四次挥手,是非常重要的,这个链接与关闭过程也是非常easy的.但为什么是三次握手?以及为什么要等待2MSL的状态?大部分人或许听到这个问题就蒙了.这篇博客就综合<TCP/IP ...

  7. 【HDU 1847】 Good Luck in CET-4 Everybody!

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1847 [算法] 我们知道,每一种状态,要么必胜,要么必败 记忆化搜索即可 [代码] #includ ...

  8. MyBatis的关联映射和动态SQL

    CREATE TABLE tb_card ( id INT PRIMARY KEY AUTO_INCREMENT, CODE ) ); '); CREATE TABLE tb_person ( id ...

  9. js获取验证码 秒表效果(原创)

    <script src="http://code.jquery.com/jquery-latest.js"></script> <input type ...

  10. 一个 passive 引发的bug

    不是什么很难的东西,权且做个记录. 首先说下背景,目前的项目中,需要同时绑定 wheel 和 scroll 事件. 绑定 wheel,目的是开发 ctrl + wheel 缩放页面功能,此功能与浏览器 ...