• Git简明教程


    1 本地Git操作

    1.1 本地库的初始化

    # 选择一个目录作为本地库, 进入该目录
    cd <目录>
    
    # 初始化本地库 (必须先初始化本地库, 才能进行 git相关操作)
    git init

    1.2 设置签名信息

    签名的作用是为了区分不同的开发人员
    签名有项目范围和全局范围之分
    项目签名的优先级高于全局签名
    注意: 这里的用户签名和 GItHub账号没有任何关系

    1.2.1 全局签名
    # 设置全局签名
    git config --global user.name xxx
    git config --global user.email xxx@yyy.com
    
    # 查看全局 Git签名 (全局的配置文件是 ~/.gitconfig)
    cat /<用户家目录>/.gitconfig
    

    设置全局 Git签名

    1.2.2 项目级别签名

    # 项目签名的设置 (与全局签名相比, 仅仅是少了个 --global参数)
    # 项目级别的文件签名需要先使用 git init初始化本地库
    git config user.name dom4j
    git config user.email w15635606382@gmail.com
    
    # 查看项目签名
    cat <项目目录>/.git/config

    这里写图片描述

    2 本地库操作

    2.1 基本操作

    git add & git commit & git status

    # 查看 git仓库状态
    git status
    
    # 提交文件至暂存区 (工作区 -> 暂存区)
    # add操作是告诉 git来追踪这个文件的变化
    git add <文件名>
    
    # 将暂存区的文件提交到本地库
    git commit <文件名> -m '备注信息'

    这里写图片描述

    2.2 从暂存区中撤销或恢复

    # 已经提交到暂存区, 但没有提交到本地库的文件
    # 将某个文件从暂存区中删除 (恢复到 git add之前的状态)
    git rm --cache <文件名>
    
    # 某个文件已提交到暂存区, 但是在工作区中不小心删掉了, 可以用如下命令恢复
    # 如果工作区的修改不想要了, 也是使用该命令使工作区恢复到和暂存区一样的内容
    # 总结: 使工作区恢复到和暂存区一致的状态, 不论工作区的该文件发生了修改还是删除
    git checkout -- <文件名>

    从暂存区中删除某些文件

    将工作区文件恢复到和暂存区一样的状态

    2.3 从本地库中撤销或恢复

    # 文件已提交到本地库 (commit指令)
    # 工作区文件不小心删除了, 或者工作区发生的改动不想要了, 可以从本地库中恢复
    git checkout -- <文件名>
    
    # 如果该文件确实想删除, 可以通过如下命令删除该文件, 并提交到本地库
    git rm <文件名>
    git commit -m '备注信息'
    
    # 注: 暂存区的文件可以删除, 以提交到本地库的文件无法删除, 本地版本库会保留提交记录
    # 可以使用git log查看提交记录

    从本地库恢复和删除文件

    2.4 查看本地库提交记录

    使用 git log命令来查看本地库相关提交记录

    # 查看所有提交过的版本信息
    git log
    
    # 查看提交记录, 简洁显示 (commit id [版本号, 用 sha1字符串表示] + 提交说明)
    # commit id是向前或向后回溯版本的必备参数
    git log --pretty=oneline   
    
    # 简洁显示提交记录 (部分哈希值 + 提交说明), 只显示当前版本之前的记录
    git log --oneline  
    
    # 简洁显示(部分哈希值 + 指针移动数目 + 提交说明)
    git reflog 

    查看提交记录

    2.5 版本前进及后退

    使用 reset 指令来进行版本回退, 只有已提交的版本才能进行回退
    Git针对每次提交都会生成一个唯一的哈希值, 使用索引(即哈希值)来确定要回退的版本

    HEAD
    HEAD 表示提交的最新版本, HEAD^ 表示上一个版本, HEAD^^ 表示上上个版本, HEAD~100 表示往上100个版本

    # 查看版本库提交记录, 确定想要会退的版本
    git log --pretty=oneline
    
    # 基于索引: 前进后退都可以
    git reset --hard <hash>
    
    # ^符号: 只能后退
    git reset --hard HEAD^^^
    
    # ~符号: 只能后退
    git reset --hard HEAD~5
    
    # reset的三个参数
    #   --hard: 仅在本地库移动 HEAD指针
    #   --soft: 仅在本地库移动 HEAD指针, 重置暂存区
    #   --mixed: 仅在本地库移动 HEAD指针, 重置暂存区和工作区
    

    -- hard & --soft & --mixed

    mixed 此为默认方式, 不带任何参数的 git reset 即这种方式. 他会退到某个版本, 只保留源码, 回退 commit 和 index信息

    soft 回退到某个版本, 只回退了 commit的信息, 不会恢复到 index file 一级, 如果要提交, 直接 commit即可

    hard 彻底回退到某个版本, 本地的源码也会变为上一版本的内容, 此命令慎用!

    Git的版本回退速度很快, 本质上是因为 Git内部有 HEAD指针, 当回退版本的时候, 只是单纯的移动指针, 所以速度很快, 使用 git reflog 可以在各个版本之间自由移动

    2.6 比较文件差异

    # 工作区文件和暂存区比较
    git diff <文件名>
    
    # 工作区文件和本地库比较
    git diff HEAD <文件名>
    
    # 工作区文件和本地库任意版本比较
    git diff HEAD~n <文件名>
    

    3 分支管理

    3.1

    # 查看分支
    git branch
    
    # 新建分支
    git branch <分支名>
    
    # 切换分支
    git checkout <分支名>
    

    4 远程库操作

    4.1 在 GitHUb上新建远程仓库

    注册GitHub账号, 登录后, 点击头像左边的加号, 选择 new repository来创建远程仓库
    创建GitHub远程仓库

    4.2 管理远程主机

    为了便于管理, Git要求每个远程主机都必须指定一个主机名, git remote 命令就用于管理主机名

    git remote add 添加与本项目相关的远程仓库
    主机名是为远程仓库起的别名, 一般一个本地库只会关联一个远程仓库, 使用 origin作为主机名
    远程仓库的地址可以使用 Git方式的和 HTTPS方式的, 在GitHUb对应仓库中复制即可

    # 添加远程主机
    git remote add <主机名> <远程仓库的地址>
    
    # 删除远程主机
    git remote rm <主机名>
    
    # 修改远程库别名
    git remote rname <原主机名> <新主机名>

    复制远程仓库地址

    4.1 推送到远程库

    在推送之前, 确保在 GitHub创建了远程仓库并且在创建了远程仓库的别名 (git remote add xxx url)

    git push
    作用:使用本地分支来更新远程分支
    指令: git push <远程主机名> <本地分支名>:<远程分支名>

    注意:
    1) 命令中的本地分支是指将要被推送到远端的分支, 而远程分支是指推送的目标分支, 即将本地分支合并到远程分支.
    2) 如果省略远程分支名, 即表示将本地分支推送至与之存在”追踪关系”的远程分支(通常两者同名), 如果远程分支不存在,
    则会被新建.

    # 将本地的 master分支推送至远程 origin主机的 master分支, 如果后者不存在, 则会被新建
    # 如果省略本地分支名, 则表示删除指定的远程分支, 因为这等同于推送一个空的本地分支到远程分支
    git push origin master
    
    # 下面这两条指令都表示删除远程 master分支
    git push origin :master
    git push origin --delete master
    
    # 如果当前分支和远程分支之间存在"追踪关系"(即分支名相同), 则本地分支和远程分支都可以省略
    # 下面这条指令表示将当前分支推送到 origin主机的对应分支
    git push origin
    
    # 如果当前分支只有一个追踪分支, 那么主机名都可省略
    git push
    
    # 如果当前分支和多个主机存在追踪关系, 则可以使用 -u选项指定一个默认主机, 这样后面就可以不加任何参数使用 git push了
    # 下面命令表示将本地的 master分支推送到 origin主机, 同时指定 origin为默认主机
    git push -u origin master
    
    # 不带任何参数的 git push, 默认只推送当前但该案分支, 这叫做 simple方式.
    # 此外还有一种 matching方式, 
    
    
    

    4.2 将远程库克隆至本地

    4.3 从远程库更新代码

  • 相关阅读:
    一个木桶的容积取决于最短的那块木板——木桶定律
    碰到系统故障了该怎么处理?
    我心中的程序员技术飞升之路
    编程名言(有些趣味性)
    haproxy部署配置
    安装mongodb插件
    安装redis扩展
    安装memcached扩展
    编译安装PHP7
    负载均衡
  • 原文地址:https://www.cnblogs.com/bobo132/p/13950356.html
Copyright © 2020-2023  润新知