zoukankan      html  css  js  c++  java
  • Git入门

    Github简介

    github是通过Git进行版本控制的软件源代码托管服务平台,于2008年4月10日正式上线。github除了Git代码仓库托管及基本的Web管理界面以外,它还提供了一些方便社会化共同软件开发的功能,即一般人口中的社群功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和bug提出评论等。

    概述
    什么是Git
    Git是一个免费、开源的版本控制软件

    什么是版本控制系统
    版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。(记录文件的所有历史变化、随时可恢复到任何一个历史状态、多人协作开发或修改错误恢复)

    什么是Github
    Github是全球最大的社交编程及代码托管网站(https://github.com/)。
    Github可以托管各种git库,并提供一个web界面(用户名.github.io/仓库名)

    Github和Git是什么关系
    Git是版本控制软件
    Github是项目代码托管的平台,借助git来管理项目代码

    为什么学习github
    学习优秀的开源项目
    关注行业前辈了解最新的行业动态
    借助github托管项目代码

    一.基本概念

    仓库(Repository):存放项目代码,多个开源项目存放多个仓库。

    收藏(star):收藏项目。

    复制克隆项目(fork):该fork的项目时独立存在的,复制过来自己用

    发起请求(Pull request):你新增了功能,觉得不错,想和原本项目一起

    关注(watch):关注别人项目,及时收到更新的消息。

    事物卡片(lssue):发现代码BUG,但是目前没有成型代码,需要讨论时用。

    主页:(1)github(2)仓库(3)个人

     

       1、四个工作区域

    Git本地有四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)、git仓库(Remote Directory)。文件在这四个区域之间的转换关系如下:

        Workspace: 工作区,就是你平时存放项目代码的地方

    Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

        Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

            Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

       2、工作流程

    git的工作流程一般是这样的:

    1、在工作目录中添加、修改文件;

    2、将需要进行版本管理的文件放入暂存区域;

    3、将暂存区域的文件提交到git仓库。

    因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

       3、文件的四种状态

    版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

    GIT不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用

    SHA-1算法计算文件的校验和。

    Untracked:   未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

     Unmodify:   文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified.

                       如果使用git rm移出版本库, 则成为Untracked文件

      Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,

                    返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

        Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,

                   文件状态为Modified

     下面的图很好的解释了这四种状态的转变:

    新建文件--->Untracked

    使用add命令将新建的文件加入到暂存区--->Staged

    使用commit命令将暂存区的文件提交到本地仓库--->Unmodified

    如果对Unmodified状态的文件进行修改---> modified

    如果对Unmodified状态的文件进行remove操作--->Untracked

    二、四个区域常用命令

       1、新建代码库

    复制代码
    # 在当前目录新建一个Git代码库
     git init
    # 新建一个目录,将其初始化为Git代码库
    git init [project-name]
    # 下载一个项目和它的整个代码历史
    git clone [url]
    复制代码

       2、查看文件状态

    #查看指定文件状态
    git status [filename]
    #查看所有文件状态
    git status

        3、工作区<-->暂存区

    复制代码
    # 添加指定文件到暂存区
    git add [file1] [file2] ...
    # 添加指定目录到暂存区,包括子目录
    git add [dir]
    # 添加当前目录的所有文件到暂存区
    git add .
    #当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用(⚠️)
    git rm file_path
    #当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 这个时候直接push那边这个文件就没有,如果push之前重新add那么还是会有。
    git rm --cached file_path
    #直接加文件名   从暂存区将文件恢复到工作区,如果工作区已经有该文件,则会选择覆盖
    #加了【分支名】 +文件名  则表示从分支名为所写的分支名中拉取文件 并覆盖工作区里的文件
    git checkout
    复制代码

        4、工作区<-->资源库(版本库)

    复制代码
    #将暂存区-->资源库(版本库)
    git commit -m '该次提交说明'
    #如果出现:将不必要的文件commit 或者 上次提交觉得是错的  或者 不想改变暂存区内容,只是想调整提交的信息
    #移除不必要的添加到暂存区的文件
    git reset HEAD 文件名
    #去掉上一次的提交(会直接变成add之前状态)   
    git reset HEAD^ 
    #去掉上一次的提交(变成add之后,commit之前状态) 
    git reset --soft  HEAD^ 
    复制代码

        5、远程操作

    # 取回远程仓库的变化,并与本地分支合并
    git pull
    # 上传本地指定分支到远程仓库
    git push

       6、其它常用命令

    # 显示当前的Git配置
    git config --list
    # 编辑Git配置文件
    git config -e [--global]
    #初次commit之前,需要配置用户邮箱及用户名,使用以下命令:
    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    #调出Git的帮助文档
    git --help
    #查看某个具体命令的帮助文档
    git +命令 --help
    #查看git的版本
    git --version
    复制代码

    参考于 https://www.cnblogs.com/best/p/7474442.html

  • 相关阅读:
    npm tip: go to the package's home page
    centos7在Evolution中配置163邮箱,被阻止收件解决方法
    emacs-显示行号以及跳转到指定行
    2020年学习目标之一——emacs
    学习前端的时候,突然想起了Sharepoint母版页里的占位符,算知识的融会不?
    问题记录--jekyll serve 启动的时候如何指定80端口
    为什么总是无法访问VMware内的web服务?
    python开发目录合并小工具 PathMerge
    python计算文件的md5值
    python+selenium 简单尝试
  • 原文地址:https://www.cnblogs.com/bertwu/p/13363833.html
Copyright © 2011-2022 走看看