zoukankan      html  css  js  c++  java
  • Git学习

    Git

    下载和安装

    下载地址:https://git-scm.com/download/win

    安装参考链接:自行搜索

    工作流程

    Git工作区域

    graph TB; A["工作区域(Working Directory)"] A1["添加、编辑、修改文件等操作"] B["暂存区(Staging Area)——索引"] B1["暂存已经修改的文件最后统一提交到git仓库中"] C["Git Repository(Git仓库)"] C1["最终确定的文件保存到仓库,成为一个新的版本并且对他人可见"] A ---A1 B ---B1 C ---C1 A --->B B --->C
    graph TB; A["工作区域(Working Directory)"] B["暂存区"] C["Git Repository(Git仓库)"] D["git status"] D1["git status"] D2["git status"] A --"git add hello.php"-->B B --"git commot -m '提交描述'"-->C D -->D1 D1 -->D2

    第一步 初始化基本信息

    #1.设置用户名
    git config --global user.name 'itcast'
    
    #2.设置用户名邮箱
    git config --global user.name 'itcast@qq.com'
    
    #3.查看设置
    git config --list
    
      git config --global user.email "you@example.com"
      git config --global user.name "Your Name"
    
    
    

    第二步 初始化一个新的Git仓库

    1. 创建文件夹

      mkdir test
      
    2. 在文件夹创建git仓库

      cd test
      git init
      

      会生成.git文件如果看不见则设置电脑显示隐藏文件

    3. 向仓库添加文件

      touch a1.php
      
      git status
      
      #添加到暂存区
      git add a1.php
      
      git status
      
      #将文件从暂存区提交到仓库
      git commoy -m 'add a1.php'
      
      git status
      
    4. 修改仓库文件

      git add a1.php
      
      git status
      
      git commit -m 'edit a1.php'
      
      git status
      
    5. 删除仓库文件

      #删除文件
      rm test.php
      
      #从Git中删除文件
      git rm test.php
      
      #提交操作
      git commit -m '提交描述'
      

    第三步 将本地仓库同步到git远程仓库

    1. Git克隆操作

      git clone 仓库地址
      

      多学一招:仓库地址由来,Clone to clipboard

    2. 将本地仓库同步到git远程仓库中

      git push
      

      注:思考无法同步

    拉取远程仓库

    #1.查看所有远程仓库
    git remote -v
    #2.pull拉取是拉取加合并 pull = fetch + merge
    git pull
    #3.fetch拉取origin,master分支操作
    git fetch origin master
    git fetch origin main
    #在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
    git fetch origin main:tmp
    #比较本地代码与刚刚从远程下载下来的代码的区别
    git diff tmp
    #合并tmp分支到本地的master分支
    git merge tmp
    git rebase tmp
    #删除分支tmp
    git branch -d tmp
    #4.远程分支next要与当前分支合并
    git pull origin next
    #5.合并需要采用rebase模式
    git pull --rebase origin master
    
    

    分支

    分支与分支之间相互独立,同时拥有自己的历史记录

    分支的建立是在基于当前分支版本进行创建

    新的分支的head指针指向当前最后一次提交

    创建删除分支

    #1.建立 feature1 分支
    git branch feature1
    #2.查看分支
    git branch
    #查看远程分支
    git branch -r
    #3.切换分支到 feature1
    git checkout feature1
    #4.建立并切换分支到 feature3
    git checkout -b feature3
    #5.删除分支 feature1
    git branch -d  feature1
    #6.重命名分支
    git branch -m old new
    #7.强制重命名当前分支
    git branch -M new
    #8.删除远程分支名 feature1
    git push origin :feature1
    #9.将本地分支名 master 推送到远程分支 main
    git push origin master:main
    

    脚下留心:github使用main不是master,命令git branch -M main

    合并分支

    #当前分支与f1比较
    git diff f1
    
    #1.合并分支f1 fast-forward(快进)合并  默认--ff
    git merge f1
    #2.合并分支f1 并记录这次合并 --no-ff 
    git merge f1 --no-ff
    #3.重写项目历史,不会带来一次提交。但是会带来问题:提交记录省略
    git rebase f1
    #4.查看差异
    git mergetool
    

    脚下留心:

    1. merge关注点:历史的提交记录。
    2. merge是合并操作。
    3. rebase关注点:项目过程发生了什么。
    4. rebase是:将当前分支所做修改复制到,目标分支的最后一次提交上。
    5. rebase的黄金法则是,绝对不要在公共分支上使用rebase。

    日志

    git log
    #一行展示
    git --oneline
    #一行展示 只看前3条
    git --oneline -3
    #展示某次版本的提交 版本号:8daf306
    git show 8daf306
    

    撤销

    注:提交到远程仓库,不可逆。

    1.撤销/丢弃最近修改

    是否暂存区 是否远程仓库 命令 描述
    git checkout -- readme.txt 撤销文件readme.txt修改
    git checkout -- readme.txt 撤销修改就回到添加到暂存区后的状态

    回到最近一次git commitgit add

    git checkout -- readme.txt
    

    2.撤销暂存区修改

    是否暂存区 是否远程仓库 命令(注意大写) 描述
    git reset HEAD readme.txt
    git status
    暂存区的修改回退到工作区
    撤销暂存区的修改

    版本回退/回滚操作

    命令 工作区 暂存区 描述
    git reset –-soft HEAD^ 已修改 已修改 只回退了commit提交
    ^代表一次 ~5代表5次 版本号也可以
    git reset --mixed HEAD^ 已修改 未修改 回退了add和commit默认
    git reset -–hard HEAD^ 未修改 未修改 彻底回退到某个版本
    一定要小心
    提交的修改和本地文件的修改都会被清楚
    git revert 产生一个新的commit
    将回退作为一次修改记录提交
    好处是不修改历史提交记录
    主分支使用
    是版本号

    删除

    1.当需要删除暂存区或分支上的文件,同时工作区不需要这个文件

    这个文件没了

    git rm fileName
    

    2.当需要删除暂存区或分支上的文件,同时工作区需要这个文件,但是不需要被版本控制

    这个文件不在暂存区了,工作区还有

    git rm --cache fileName
    

    忽略文件

    新建一个名称为.gitignore的文件

    # 忽略指定文件
    HelloWrold.class
    
    # 忽略指定文件夹
    bin/
    bin/gen/
    
    #不忽略txt文件
    !*.txt
    

    自动生成项目忽略文件

    1. www.gitignore.io

    2. https://www.toptal.com/developers/gitignore

    代理

    git的代理

    git config --global http.proxy 'socks5://127.0.0.1:1080' 
    
    git config --global https.proxy 'socks5://127.0.0.1:1080'
    

    github的代理

    #只对github.com
    git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
    
    #取消代理
    git config --global --unset http.https://github.com.proxy
    

    查看配置

    cat ~/.gitconfig
    

    认证

    https方式:

    每次push(提交)都需要验证用户名和密码。

    ssh方式:

    首先你必须是该项目的管理者或拥有者,并且需要配置个人的ssh key下。

    #1.生成SSH KEY
    ssh-keygen -t rsa -C "yourmail@gmail.com"
    #2.SSH KEY位置
    cd ~/.ssh 
    ls
    #.pub是公钥
    

    多ssh key管理请参考Git安装及SSH Key管理之Windows篇

    GitHub CLI:

    第一方命令行工具,可以通过命令行与GitHub对接。参考链接

    Git工作流:

    1. 集中式工作流

      都使用同一分支

    2. 功能分支工作流

      每个人开一个自己的分支,进行提交合并操作

      使用Pull Request,通知他人你修改了代码

      "Pull Request 是一种通知机制。你修改了他人的代码,将你的修改通知原来的作者,希望他合并你的修改,这就是 Pull Request。"

    3. Gitflow工作流

      主分支:版本迭代,正式发布历史

      开发分支:功能分支工作流中的master

    4. Forking工作流

      使用个人账号,进行fork仓库,修改后使用Pull Request,告知主仓库作者,修改内容

    参考连接:https://github.com/WenzhengLi/my-git/blob/master/git-workflow-tutorial.md

    CMD命令

    常用命令

    命令 用途
    ls 当前文件目录
    ll 当前文件目录,详细
    pwd 当前工作目录
    cls 清屏
    mkdir test 新建文件夹test
    cd test 进入文件夹test
    cd .. 返回上一级
    touch a1.php 新建a1.php文件

    CMD命令之vi操作文件

    命令 用途
    vi a1.php 编辑a1.php文件
    i/insert 输入内容
    esc 退出输入
    :w 保存
    :q 退出vi
    :wq 保存并退出文件
    :set nu 显示行号
    :set nonu 取消行号

    Git命令

    Git常用命令

    命令 用途
    git version git版本
    git config --global user.name 'itcast' 配置git的用户名为‘itcast’
    --global是全局参数
    git config --global user.email 'itcast@qq.com' 配置git的邮箱为'itcast@qq.com'
    cat ~/.gitconfig 查看目前的配置
    git log 历史记录
    git reflog 记录每一次命令
    git init 初始化git仓库
    默认master分支
    git status git仓库状态
    git add “README.md” 添加“README.md”到暂存区
    git add -A 添加git目录所有文件到暂存区
    git rm “README.md” 删除暂存区或分支上的文件
    同时工作区不需要这个文件
    git rm --cache “README.md” 删除暂存区或分支上的文件
    同时工作区需要这个文件,但是不需要被版本控制
    git commit -m "add README.md" 提交暂存区文件到git本地仓库
    git remote add origin https://github.com/Zero-three/Test.git 添加远程仓库https://github.com/Zero-three/Test
    origin远程仓库名
    git remote -v 所有远程仓库
    git push origin master 推送本地git仓库到远程仓库
    git push origin master -u 记录远程仓库名分支
    之后只用git push即可提交
    git clone https://github.com/Zero-three/Test.git 将远程仓库代码克隆到本地
    git clone https://github.com/Zero-three/Test.git test-demo 将远程仓库代码克隆到本地目录的test-demo文件夹下
    git pull 拉去远程仓库代码
    clear 清屏

    Git简称

    命令 命令简称 git命令
    status st git config --global alias.st status
    checkout co git config --global alias.co checkout
    commit ci git config --global alias.ci commit
    branch br git config --global alias.br branch

    Git小技巧

    1. git add

      #无论在哪个目录执行都会提交相应文件
      .git add all
      .git add -A
      #只能够提交当前目录或者它后代目录下相应文件
      .git add .
      
      
  • 相关阅读:
    观察者模式
    盛最多水的容器
    单例模式
    (七)STL适配器
    (六)STL仿函数functor
    (五)STL算法
    吴恩达《机器学习》课程总结(3)_线性代数回顾
    吴恩达《机器学习》课程总结(2)_单变量线性回归
    吴恩达《机器学习》课程总结(1)_绪论:初识机器学习
    图像表示与描述
  • 原文地址:https://www.cnblogs.com/WenzhengLi/p/14296806.html
Copyright © 2011-2022 走看看