zoukankan      html  css  js  c++  java
  • 1. Git初始

    一、Git初始

    1. 定义

    ​ 分布式的版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git.当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库.

    https://www.cnblogs.com/Sungeek/p/9152223.html#sg1

    2. SVN和Git区别

    1. Git是分布式的,SVN是集中式

    2. Git把内容按元数据方式存储;SVN是按文件,所有的资源控制系统都是把文件的元信息隐藏在一个类似svn,cvs等文件夹中

    3. Git没有一个全局版本号,而SVN有

    4. Git分支和SVN分支不同

    5. Git的内容完整性优于SVN;Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏.

    二、Git安装使用

    1. Git安装

    1. Linux
        yum install git -y
    
    2. Ubuntu
        apt-get install git
    
    3. 查看Git版本
        git --version
    

    2. 运行Git前的配置

    1. 设置用户名称/邮箱地址(针对当前linux用户添加一个配置,不会对其他人造成影响);存着 ~/.gitconfig文件中
        git config --global user.name "Johon"
        git config --global user.email johon@example.com
    
    2. 用--system 就对操作系统所有用户,都设置这个配置
        git config --system user.name "wusir"
        git congig --system user.email wusir@luffy.com
    
    3. 查看全局版本用户信息
        git config --global --list
    

    3. Git工作流程

    ​ 使用Git就是将本地文件(工作目录workspace)的文件,添加到暂存区(stage),然后提交到本地仓库(repository),最终可以协同开发,推送到远程仓库(remote)

    # 切换到项目目录mysite
    cd mysite
    # 初始化git仓库
    git init
    
    备注:git init命令会创建一个.git隐藏目录,这个目录包含初始化git仓库所有的核心文件;此步仅仅是初始化,此时项目里的代码还没有被git跟踪,因此还需 git add 对此项文件跟踪,然后 git commit 提交到本地仓库
    
    请记住,在工作文件夹的每一个文件,只有两种状态,一个是未跟踪,一个是已跟踪
    (1)已跟踪:指的是已被纳入git版本管理的文件,在git快照中有它的记录
    (2)未跟踪:指的是文件既不在git快照中,也不在暂存区
    
    git init 初始化时的工作文件夹,都属于已跟踪了,后续的编辑操作都会标记为[已修改文件],因此需要将修改后的文件,加入[暂存区],然后[提交暂存区的文件]
    

    4. 查看文件状态

    # 只能在git工作目录中输入这个命令,他会去找.git文件夹
    git status
    
    [root@pyyuc ~/git_learning/mysite 12:00:34]#git status
    # On branch master
    #
    # Initial commit
    #
    nothing to commit (create/copy files and use "git add" to track)
    
    说明当前工作目录很干净,所有的已跟踪文件,已经被提交且未更改。
    此时处在master默认分支。
    
    在git版本库目录下,新创建的文件,都会被标记为  Untracked files,代表未跟踪的文件,需要使用git add .
    必须得在含有.git文件夹的目录,去敲命令,才可以输入git命令
    修改django的url.py,写入新功能,也是对文件进行修改标记 modified 对修改过的代码文件,也必须git add 添加到暂存区
    
    git init mysite                       // 初始化git仓库
    git status                           // 查看git状态
    echo "print('挣了一个亿')" > main.py // 新建一个代码文件,此时是未被git跟踪的
    git status                         // 再次查看状态
    [Untracked files:
          (use "git add <file>..." to include in what will be committed)
           main.py
    ]
    git add main.py                  // 开始跟踪main.py文件
    git status                      // 此时再看已经被跟踪,现在已是可以被提交的状态,此时处于暂存区
    git commit -m "main.py已修改"   // 告诉git,把暂存区的main.py提交到本地仓库
    git log                        // 查看提交的记录
    

    5. 文件重命名

    直接mv的操作,会被git记录为两个形容,一、删除原有文件、二、新建了mymain.py文件
    此时新文件还未被跟踪,需要git add , git commit
    原本的main.py还需要从暂存区删除
    
    [root@pyyuc ~/mysite 14:57:57]# git status
    [root@pyyuc ~/mysite 14:57:57]# git status
    # On branch master
    # Changes not staged for commit:
    #   (use "git add/rm <file>..." to update what will be committed)
    #   (use "git checkout -- <file>..." to discard changes in working directory)
    #
    #    deleted:    main.py
    #
    # Untracked files:
    #   (use "git add <file>..." to include in what will be committed)
    #
    #    mymain.py
    no changes added to commit (use "git add" and/or "git commit -a")
    
    
    1. 命令
    git mv main.py my_main.py        重命名
    git rm main.py                   删除暂存区的main.py
    git add .                        将本地工作区的代码,提交到暂存区
    git commit -m "mv mymain.py"     将暂存区的代码,提交到本地版本仓库中
    
        6. Git回退/前进
    1. 先查看git提交记录,查看要回退的id
        git log
    
    2. 在使用git reset 回退
        git reset --hard 954e6df1c0a2a71dd141850727d3eddd580518b3
    
    3. 查看所有回退记录,即可任意切换至想要切换的文件位置,指针指向对应id即可
        git reflog
    
    备注:git的切换,本质就是对HEAD文件指针的来回切换
    

    6. Git回退/前进

    1. 先查看git提交记录,查看要回退的id
        git log
    
    2. 在使用git reset 回退
        git reset --hard 954e6df1c0a2a71dd141850727d3eddd580518b3
    
    3. 查看所有回退记录,即可任意切换至想要切换的文件位置,指针指向对应id即可
        git reflog
    
    备注:git的切换,本质就是对HEAD文件指针的来回切换
    

    7. 撤回Git修改记录

    对已经跟踪的文件app01/views.py进行修改,此时标记为了modified: app01/views.py;此时可以提交操作,也可撤回操作
    (1)如果想提交本次修改操作
        git add .
    (2)如果发现代码改错了,git可以实现撤回
        git checkout -- 文件名
        git checkout -- app01/views.py
    

    8. Git临时区

    使用流程,场景,在你开发新功能的时候,突然线上代码有问题,你必须得改线上代码,将你目前已经开发好的功能,临时存储起来,待你修复bug完毕之后,再把这个临时存储的代码,回退回来即可
    
    1. git stash  //将你暂存区提交的代码,放到一个stash临时区中;此命令是在git add之后执行的
    2. 修复bug完成
    3. git stash pop // 拿回stash代码
    4. git stash list // 查看stash是否还有临时代码
    5. git add . // 注意未标记的,已修改的文件,都得git add 添加到暂存区之后,才可以提交到本地仓库
    6. git commit -m "提交注释信息"
    

    9. Git分支

    git分支功能,每个人都有自己的分支,不直接影响本体代码,在自己的分支上,写完代码后,通过管理员吧分支的代码,合并到主干上即可
    
    (1)git branch // 查看当前所在的分支
    (2)git branch wusir // 创建wusir分支
    (3)git branch alex // 创建alex分支
    (4)git checkout wusir // 切换至wusir分支
    
    分支开发使用流程
    (1)创建分支
        git branch wusir
    (2)切换分支
        git checkout wusir
    (3)在分支下,进行编写自己的代码
        ...
    (4)切换到主干分支上
        git checkout master
    (5)合并分支代码,此时wusir开发的代码,就被合并到master了
        git merge wusir	
    
    分支冲突,手动解决冲突;将其系统标记的注释删除即可.
    
    原因:master分支和wusir分支,同时操作一个文件,对同一行代码进行写入
    
    1. git命令
    git branch 分支名linux     创建分支linux
    git checkout 分支名linux    切换分支到linux
    git branch    查看当前分支情况,在哪一个就有*符
    git check -- filename 一键还原文件,将git仓库的文件覆盖当前文件,危险命令
    git checkout -b name  创建+切换新的分支
    

    10. Git常用命令

    git init 初始化
    git status  查看git版本库的状态
    git add 指定文件或者 .
    git commit -m "提交的注释"  提交暂存区的内容到本地仓库
    git checkout  文件名  #撤回对文件的修改
    git checkout 分支名 #切换不同的分支
    git log   #查看git提交的日志记录
    git reflog  #查看所有提交以及回退的记录
    git reset --hard  commitID  #回退到某一个提交的id版本下
    git config --global user.name "你的名字"
    git config --global user.umail "你的邮件"
    git branch           #查看分支
    git branch 分支名  #创建一个新的分支
    git branch -d  分支  #删除这个分支
    git checkout -b 分支名 #创建并且切换到一个新的分支下
    git stash   #将暂存区的记录,临时放到一个区域 ,先git add之后,再git stash
    git stash pop  #删除最后一个stash记录,放回暂存区
    git rm  #删除git版本库中的文件
    git mv  #改名
    
    git remote add 别名 github仓库的地址
    用法如下:
    git remote add origin git@github.com:ayuchao/s16gitlearning.git
    
    git push 别名 分支名  
    用法如下:
    git push origin master #推送本地git仓库到github仓库了
    
    
    git pull origin master  #下载github远程仓库到本地来
    
  • 相关阅读:
    Mysql存储引擎
    k8s集群故障二:节点为NotReady状态
    K8S集群二进制搭建3——部署Master Node
    K8S集群二进制搭建2——docker搭建
    K8S集群二进制搭建1——集群介绍及Etcd集群搭建
    政府会计
    其他收益、递延收益的区别
    未确认融资费用通俗理解
    非货币性资产交换的会计处理
    借营业收入贷营业成本投资收益
  • 原文地址:https://www.cnblogs.com/hq82/p/11564055.html
Copyright © 2011-2022 走看看