zoukankan      html  css  js  c++  java
  • git教程

    git教程--廖雪峰--https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    1、

    版本库=仓库=repository
    Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
    第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
    第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
    工作区,暂存区,当前分支

    mkdir first
    cd first
    git init 就会把目录变成仓库,而且是空的仓库(empty Git repository)
    产生一个.git文件,是Git来跟踪管理版本库的,没事别乱改
    ls -ah 可以查看隐藏的.git目录

    只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外

    而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。
    Unix的哲学是“没有消息就是好消息”
    把一个文件放到Git仓库
    git add readme.txt //添加readme.txt文件到“暂存区”,

    use "git add <file>..." to update what will be committed

    git add . //添加所有文件到“暂存区”
    git commit -m “信息” //把“暂存区的文件”提交到仓库,原子性的提交

    git status //跟踪仓库当前的状态
    git diff readme.txt //查看readme.txt文件上次修改了什么
    提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

    git log //可以查看历史commit的东西,命令显示从最近到最远的提交日志
    你看到的一大串类似3628164...882e1e0的是commit id(版本号)
    是一个SHA1计算出来的一个非常大的数字,用十六进制表示
    git reset //把当前版本“append GPL”回退到上一个版本“add distributed”

    $ git reset --hard HEAD^
    HEAD is now at ea34578 add distributed //指定回到未来某个版本 果然,我胡汉三又回来了。前提是没有推送到远程库。

    git reset --hard 3628164
    HEAD is now at 3628164 append GPL

    Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL

    git reflog //Git提供了一个命令git reflog用来记录你的每一次命令:
    而LICENSE还从来没有被添加过,所以它的状态是Untracked。

    git checkout —— readme.txt //Git会告诉你,git checkout -- file可以丢弃工作区的修改:(checkout其实是用版本库里的版本替换工作区的版本)


    $ git checkout -- readme.txt

    用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:


    $ git reset HEAD readme.txt
    Unstaged changes after reset:
    M readme.txt


    现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

    git rm readme.txt
    git commit -m "fix"

    另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:

    $ git checkout -- test.txt. //git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

  • 相关阅读:
    mysql安装与基本管理,mysql密码破解
    非阻塞IO模板
    多路复用IO模板
    第四模块:网络编程进阶&数据库开发 练习
    理解Queue队列中join()与task_done()的关系
    第四模块:网络编程进阶&数据库开发 口述
    SQLite
    rest_cherrypy
    SaltStack Returners
    kafka集群安装,配置
  • 原文地址:https://www.cnblogs.com/qingshuiqingqing/p/8975974.html
Copyright © 2011-2022 走看看