zoukankan      html  css  js  c++  java
  • Git 原理与使用

    版本操作

    工作区有一个隐藏目录 .git叫做Git的版本库,这里存了很多东西,其中最重要的称为stage(或index) 的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫做HEAD。相应的图示如下图所示:

     

    则将文件往Git版本库添加时,分两步执行:

    第一步用git add把文件添加进去,实际上就是把文件修改提交到暂存区;第二步是用git commit提交修改,实际上就是把暂存区的所有内容提交到当前分支。

    #git commit -m '注释' 缓存提交至项目分支(-m为注释指令)

    注:因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,现在的git commit就是往master分支上提交更改。在我们每次修改后,如果不用git add到暂存区,那就不会加入到commit中。

    #git status 查看缓存区中文件

    #git log 查看现有版本号

    版本回退

    #git reset --hard [id] 使HEAD指针滚至特定版本(id为版本id,reflog可查)

    #git reset --hard head^ 返回上一版本

    #git reflog查看全部操作

    对工作区进行撤销操作 

    暂存区覆盖工作区 

    #git restore [文件名]

    #git checkout -- 【文件名】在git2.23版本已被restore替换 

    分支提交区(HEAD所指版本覆盖暂存区)

    #git reset head

    所以如果想让工作区回退到某一版本

    一步到位 git checkout head 【文件名】

    或者可以:

    1.使head指向特定版本

    2.reset分支版本覆盖缓存区

    3.restore缓存覆盖工作区

    远程仓库

    #git remote -v 查看当前远端地址

    #git remote add 【库名,一般为origin】 [特定库的ssh链接]

    首次上传到库用

    #git push -u 【库名,一般为origin】 master 

    之后可以简化成

    #git push 【库名,一般为origin】 master

    删除路径

    #git remote rm 【库名,一般为origin】

    远程库克隆到本地

    #git clone [特定库的ssh链接]

    删除远端库数据

    1. 把远端数据先拉到本地库 #git pull

    2. #git rm -r . 清除所有文件 

    #git rm [文件名] 清除特定文件

    3. #git commit -m 'xxxx'

    4. #git push

    git clone

    git clone 是将其他仓库克隆到本地,包括被 clone 仓库的版本变化,因此本地无需是一个仓库,且克隆将设置额外的远程跟踪分支。因为是克隆来的,所以 .git 文件夹里存放着与远程仓库一模一样的版本库记录,clone 操作是一个从无到有的克隆操作。可以理解为远端仓库的一个本地映射

    $ git clone <版本库的URL> [本地目录名]

    如果不指定本地目录,则会在本地生成一个远程仓库同名的目录。

    git pull

    git pull 是拉取远程分支更新到本地仓库再与本地分支进行合并,即:git pull = git fetch + git merge

    $ git pull <远程主机名> [远程分支名]:[本地分支名]

    如果不指定远程分支名和本地分支名,则会将远程 master 分支拉取下来和本地的当前分支合并。

    $git fetch 从远端获取数据

    $git merge 两分支内容合并

    clonepull的区别

    1. 是否需要本地初始化仓库

    git clone 不需要,git pull 和 git fetch 需要。

    2. 是否可以指定分支推送到远程

    git clone下来的项目可以直接推送到远程,git pull 和 git fetch 需要先执行 git remote add 添加远程仓库后才能 push。

    *head detached at 怎么解决?

    解决方式见 <https://zhidao.baidu.com/question/1386681614058015020.html>

     参考材料:

     https://blog.csdn.net/edj_13/article/details/104548375

     http://www.360doc.com/content/17/0215/15/17572791_629200351.shtml

     https://www.cnblogs.com/tinywan/p/12344267.html

     https://www.cnblogs.com/tangxuliang/p/11950995.html

  • 相关阅读:
    virtual
    微软MBS intern笔试
    Ubuntu Linux Green hand
    Coding style
    abstract
    Jquery Ajax请求标准格式
    Hashtable的简单实用
    C#中GET和POST的简单区别
    WIN7 64位机与32位机有什么区别
    一个加密解密类
  • 原文地址:https://www.cnblogs.com/kaster28/p/13151514.html
Copyright © 2011-2022 走看看