Git入门——本地版本库操作

时间:2022-09-05 09:41:41

作为一个一直用SVN的家伙,深深地感到了自己在版本控制工具上的落伍。。。。


首先必须强调的是: Git与Github不是一回事。 Git是目前世界上最先进的分布式版本控制系统,于2005年被linux创始人Linus开发出来。而Github是一个基于Git为全球开源项目免费提供git存储的网站,众多著名开源项目都迁移至Github~ 而开源时代的来临也使得软件行业活力倍增。

作为分布式版本控制系统的Git,与传统的CVS、SVN相比优势明显。传统的集中式系统,版本库集中存放在*服务器,各个终端必须连接至*服务器进行操作,这导致了许多的不方便。在Git中,没有*服务器,每个终端上都有一个完整的版本库,安全性大大提升。(在集中式系统中,一旦*服务器挂掉还是很棘手的) 不过在使用的时候,Git中也会有台主机担任相当于“*服务器”的角色,它用来作为主分支方便所有人交换分支并进行总体的版本控制,但它并不是必须的。 Git相对于传统集中式版本控制系统的优势还不仅仅在于安全性,其暂存区、分支等概念也带来了很多的优势。

对于Git的使用,主要有客户端与命令行两种方式,个人觉得不一定必须去追求命令行的使用,非Linux环境下已经有了很好有的图形化界面干嘛不用?~   
    Github客户端:https://desktop.github.com/
    Sourcetree:https://www.sourcetreeapp.com/
    很多IDE中也已经集成了Git,比如Visual Studio、Storm系列,Sublime中也有Git插件。  关于客户端的使用就自行摸索了~
在命令行中使用,Linux自然不用说,而在Windows下主要是使用GitBash工具。本文中的演示也是基于Windows下的Git Bash

进入正题:
  
一、创建版本库并提交文件: 
        1、创建项目目录并使用git init命令将其变成一个Git可以管理的仓库:
        如:Git入门——本地版本库操作
               Git入门——本地版本库操作
        随后就会在该文件夹下发现隐藏属性的.git目录,Git就是使用这个目录来跟踪管理版本库的。

        2、创建文件并添加到仓库
              我已经在Data-Structure-in-JavaScript文件夹下创建了BinaryTree.js 将其添加到版本库的步骤如下:
              Git入门——本地版本库操作
             共需两步: 1、git add 文件名   对需要提交的文件进行add操作,可多次进行
                         
       2、git commit [-m 提交说明]  对之前add的文件执行提交,说明不是必须选项但强烈建议养成每次提交写说明的习惯。
             让我们把其它文件也加入:
             Git入门——本地版本库操作

            为什么要分两步操作呢?在Git中有着工作区与暂存区的概念,我们的项目目录即是工作区。而在版本库中,则有暂存区与分支。add操作是将当前修改提交到暂存区,而commit操作则是将暂存区所有的修改提交至分支。
二、与版本库进行交互
        1、查看当前状态:git status
            Git入门——本地版本库操作
            此时我们修改一下BinarTree.js,则会显示出修改过的文件 使用git diff命令还能显示修改过的位置
            Git入门——本地版本库操作
            修改过之后再次使用git add与git commit命令提交修改即可
        2、版本回退
            首先可以使用git log命令查看历史记录。使用该命令会显示从最近到最远的提交记录,每条记录中显示版本号、提交者、提交日期以及提交记录四项。
            Git入门——本地版本库操作
            使用git reset --hard commit_id命令进行回退
            Git入门——本地版本库操作
            只要本次进程没有关闭,还是可以通过同样的命令回到未来的版本。假如进程关闭之后再想回到未来版本的话,可以使用git reflog命令查看命令历史,从中获知未来版本的版本号并进行穿梭。重启Git Bash 操作如下
            Git入门——本地版本库操作
        3、撤销修改
            可以使用git checkout -- file命令撤销工作区的修改。很容易理解,检出操作会用最近一次commit或add的文件来覆盖当前修改过的文件,当前工作区的修改就等同于被撤销。这里如果已经添加到了暂存区,则会恢复暂存区的状态;如果还没添加至暂存区,则会回到版本库中的最新版本时的状态。
            如果修改已经添加至暂存区,则可以使用git reset HEAD file操作,将暂存区的修改撤销,重新放回工作区。此时,便可以使用checkout命令撤销工作区的修改~
            如果修改已经提交至版本库。。。 回退版本吧~
        4、删除文件
            删除文件的时候,我们直接在系统中删除文件。此时,git中便会显示删除的文件,此时可以使用 git rm 文件名 并提交将文件从版本库中删除;或者使用git checkout 文件名命令恢复文件。比如这里新建了remove.js文件,之后在系统中删除该文件。
            Git入门——本地版本库操作Git入门——本地版本库操作

总结:
命令 功能
git init 创建版本库
git add 文件名 将修改添加至暂存区
git commit 将暂存区的所有修改提交至版本库
git status 查看当前状态
git log 查看版本记录
git reflog 查看命令历史
git checkout -- 文件名 检出文件以撤销工作区修改
git reset HEAD file 撤销暂存区修改,恢复至工作区
git rm 文件名 删除文件

Git入门——本地版本库操作的更多相关文章

  1. git入门 创建版本库, 版本管理 分支 标签

    参考: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GIT最流行的分布式版本 ...

  2. [git]入门-创建版本库

    转载整理自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256 ...

  3. Git创建本地版本库

    什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...

  4. Git(2):本地版本库的一些操作

    参考链接:https://www.cnblogs.com/zhuwq585/p/6390542.html

  5. Git的使用(2) —— 本地版本库的操作

    1. 向本地版本库中添加文件 注意:.git文件夹是本地版本库,包含.git文件夹的目录叫工作目录,要往本地版本库中添加文件,就必须将文件放在工作目录中. (1) 把文件添加到工作目录中. (2) 右 ...

  6. git版本控制工具(二)----本地版本库的常用操作

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  7. Git学习(1)-本地版本库的创建

    我用的是Git-2.14.3-64-bit版本,在windows64位上运行的,把软件分享下链接:http://pan.baidu.com/s/1jIoZ7Xc 密码:13q2. 安装及配置自行百度, ...

  8. Git for Windows之推送本地版本库到远程仓库

    Git for Windows之基础环境搭建与基础操作中介绍了Git基本环境的构建与基本的操作.生成了一个本地git版本库,本文将介绍如何将这个版本库推送到远程仓库(码云,github也可以). 1. ...

  9. Git push将本地版本库的分支推送到远程服务器上对应的分支

    在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果不清楚版本库的构成,可以查看我的另一篇,git 仓库的基本结构. g ...

随机推荐

  1. 细说websocket - php篇

    下面我画了一个图演示 client 和 server 之间建立 websocket 连接时握手部分,这个部分在 node 中可以十分轻松的完成,因为 node 提供的 net 模块已经对 socket ...

  2. jQuery从无知到无所不知

    说明: 本文以读书笔记的方式整理jQuery的重要知识点,言简意赅,一语中的,删繁就简,引人入胜. 本文先对jQuery强大的功能作一系统的介绍,再详细整理jQuery的选择器.过滤器.DOM操作.事 ...

  3. 一次由于字符集问题引发的MySQL主从同步不一致问题追查

    近期业务准备上线一个新功能,灌入数据之后突然发现主从同步停止,报错如下: Error 'Duplicate entry '66310984-2014-04-18 00:00:00--122815.sh ...

  4. npminstall无法安装node-sass

    cannot download "https://hithub.com/sass/node-sass/releases/download/v3.13.0/win32-x64-46_bindi ...

  5. Python基础知识(五)

    # -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...

  6. [Asp.net MVC]Asp.net MVC5系列——布局视图

    目录 系列文章 概述 布局视图 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net M ...

  7. C++11 bind

    #include <iostream> #include <functional> using namespace std; int func(int a, int b) { ...

  8. Android ffmpeg rtmp(source code)

    souce code: Android.mk 编译生成APK需要调用的so文件 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODU ...

  9. Redis 的 GEO 特性将在 Redis 3&period;2 版本释出

    Redis 的 GEO 特性将在 Redis 3.2 版本释出, 这个功能可以将用户给定的地理位置信息储存起来, 并对这些信息进行操作. 本文将对 Redis 的 GEO 特性进行介绍, 说明这个特性 ...

  10. CS小分队第一阶段冲刺站立会议(5月11日)

    昨日成果:完成了倒计时器的制作,为其添加了声音:并对扫雷游戏的失败添加了动态效果: 遇到的困难:把图片放入picturebox中无法改变图片的大小,音乐格式只能使用.wav,该格式音乐比较大,增加了整 ...