• git 知识点


    • git 删除远程已经推送过的文件或者文件夹
    git rm -r --cached [文件或文件夹]
    git status
    git add .
    git commit -m '删除远程仓库文件,本地仓库和暂存区不受影响'
    git push
    
    • 问:如何上传项目代码到gitlab?
      答:
    1. git remote add
    2. 把文件commit到master
    3. 在gitlab上创建dev分支
    4. pull后,切换到dev分支
    5. 把master的内容merge到dev。
    • 想把某些目录或文件加入忽略规则,.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
      那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:(后面的点号根据情况可以是文件或文件夹)
    git rm -r --cached .
    git add .
    git commit -m 'update .gitignore'
    
    • vue项目修改了代码,必须打包。

    • mac下git安装:

    brew install git
    
    • 运行brew命令,需要先安装 homebrew
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    

    会提示是否继续,按return键继续。

    • git 术语:
    英文 中文
    working directory(workspace) 工作区
    stage(或index) 暂存区
    repository 本地仓库
    remote 远程仓库

    • git 常用命令:
    命令 作用 备注
    git config git 的配置信息
    git add 把文件修改添加到暂存区(git add 不支持添加空文件夹)
    git commit 把暂存区的所有内容提交到当前分支
    git status 查看没有提交的文件
    git branch -a 查看所有分支,包括远程的和本地的
    git branch -l 查看本地分支
    git branch -r 查看远程分支
    git checkout [分支名] 切换分支
    git remote show origin 查看分支远端信息
    git init 把这个目录变成Git可以管理的仓库
    git checkout -- [文件] 把文件在工作区的修改全部撤销(其实是用本地仓库里的版本替换工作区的版本)
    git rm 删除的是:本地仓库、工作区的文件
    git rm [-r] [--cached] 删除的是本地仓库中的文件,本地工作区的文件会保留且不再与远程仓库发生跟踪关系
    git remote -v 查看远程仓库地址
    • git 撤销操作 表格显示:
    命令 撤销操作命令 说明
    场景1:改乱了工作区某个文件的内容,还没运行git add命令 git checkout -- file
    场景2:git add [文件或文件夹] git reset HEAD [path],进入场景1
    场景3:git commit,且没有推送到远程库 git reset --hard [commit_id]
    • git 撤销操作 文章说明:
      场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
      场景2:当你不但改乱了工作区某个文件的内容,还添加add到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
      场景3:已经提交commit不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
      http://joehill.me/2016/02/18/2016-02-18-Git-Tutorial/

    • 撤销 git add 操作(还没有commit):
      git status 先看一下add 中的文件
      git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
      git reset HEAD XXX/XXX/XXX.Java 就是对某个文件进行撤销了

    • 撤销 git commit 操作(还没有push):
      1.先使用
      git log 查看节点

    commit xxxxxxxxxxxxxxxxxxxxxxxxxx 
    Merge: 
    Author: 
    Date:
    

    2.然后
    git reset commit_id
    说明:
    git reset commit_id (回退到上一个 提交的节点 代码还是原来你修改的)
    git reset –hard commit_id (回退到上一个commit节点, 代码也发生了改变,变成上一次的)

    • 还原已经commit提交的修改
      此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交
      git revert HEAD 撤销前一次 commit
      git revert HEAD^ 撤销前前一次 commit
      git revert commit-id (撤销指定的版本,撤销也会作为一次提交进行保存)
      git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

    • git reset 与 git revert:
      带 --hard 是工作区和暂存区都重置,不带 --hard 是只重置暂存区

    // 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
    $ git reset [file]
    // 重置暂存区与工作区,与上一次commit保持一致
    $ git reset --hard
    // 重置当前分支的HEAD为指定commit,同时重置暂存区,但工作区不变
    $ git reset [commit]
    // 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区
    $ git reset --hard [commit]
    // 重置当前分支的HEAD为指定commit,但保持暂存区和工作区不变
    $ git reset --keep [commit]
    // 新建一个commit,用来撤销指定commit
    // 后者的所有变化都将被前者抵消,并且应用到当前分支
    $ git revert [commit]
    
    • git reset HEAD的背后原理:
      HEAD为目前最新的commit节点, git reset HEAD表示将档案还原到目前最新的commit,若没有任何参数,预设为--mixed :
      --soft : repository的档案会被还原到HEAD,但stage与working directory档案不变。
      --mixed : repository与stage的档案都会被还原到HEAD,但working directory的档案不变。
      --hard : repository、stage与working directory的档案都会被还原到HEAD。

    • Git的版本库(Repository)里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
      命令中用HEAD时,表示最新的版本。
      工作区(Working Directory):就是你在电脑里项目的主目录

    • 基本操作流程:
      说明:当前在自己的分支:self;远端开发分支:dev。
      基本命令:
      git status
      git add .
      git commit -m 'modify'
      //从远端dev拉取
      git pull origin dev
      //将自己分支self推送到远端dev
      git push origin self:dev

    • 产生秘钥bash命令:ssh-keygen -t rsa -C "xxx@xxx.com", 然后一路回车(好像3下),vi ~/.ssh/id_rsa.pub,复制出内容粘贴到SSH Keys。

    • git 命令配置简写,2种方法
      1.命令行配置

    $ git config --global alias.st status
    

    2.修改配置文件:~/.gitconfig

    $ vi ~/.gitconfig
    ...
    [alias]
        st = status
        ci = commit
        co = checkout
        br = branch
    [user]
        name = Your Name
        email = your@email.com
    ...
    
    • https 和 SSH 的区别:
      1、前者可以随意克隆github上的项目,不管是谁的;而后者要求你必须是要克隆项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。
      2、https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码,否则不需要输入密码。
  • 相关阅读:
    暑假集训Day14 I (莫队)
    暑假集训Day14 G (gcd 数学)
    暑假集训Day13 H (进制转换 数学)
    暑假集训Day13 C (二分+贪心)
    暑假集训Day13 I (区间DP)
    暑假集训Day12 H (数论 STL)
    Java8中list转map方法总结
    Typora ---一款简洁的Markdown编辑器
    java8 map flatmap
    Elasticsearch基本查询总结
  • 原文地址:https://www.cnblogs.com/cag2050/p/6872186.html
Copyright © 2020-2023  润新知