zoukankan      html  css  js  c++  java
  • Git基本使用

    Git导入

    • Git是目前世界上最先进的分布式版本控制系统, 由大神Linus花了两个星期用C写的 (真的牛逼...)

    • 集中式: 版本库存放在中央服务器

    • 分布式: 每个人电脑上都有一个完整的版本库

    Git安装

    • 反正我已经安装好了

    创建版本库

    • 打开Git Bash, 输入如下命令
    $ mkdir learngit
    $ cd learngit
    $ pwd  
    /c/Users/Black/learngit
    
    • 再输入如下命令初始化
    $ git init
    Initialized empty Git repository in C:/Users/Black/learngit/.git/
    
    • 把文件 (readme.txt) 添加到版本库
    先新建一个readme.txt文件放入learngit文件夹下面 
    $ git add readme.txt
    $ git commit -m "wrote a readme file"
    [master (root-commit) 72a85ed] wrote a readme file
     1 file changed, 2 insertions(+)
     create mode 100644 readme.txt  
    
    • 总结

    初始化一个Git仓库,使用git init命令。

    添加文件到Git仓库,分两步:

    1. 使用命令git add ,注意,可反复多次使用,添加多个文件;
    2. 使用命令git commit -m ,完成。( -m 后面输入的是本次提交的说明)

    时光机穿梭

    版本回退

    • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
      • git reset --hard HEAD^ 返回上一版本
      • git reset --hard HEAD 7413b 根据版本号返回
    • 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
    • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    工作区和暂存区

    • git diff 查看工作区和暂存区的区别
    • git diff --cached 查看暂存区和仓库的区别
    • Git管理文件的三种状态: 已修改(modified), 已暂存(staged), 已提交(committed)

    管理修改

    • 第一次修改--->git add--->第二次修改--->git commit

      这样会导致第二次修改没有被提交到版本库

    撤销修改

    • git checkout -- 文件名, 把文件在工作区的修改全部撤销
      • 文件自修改后还没被放到暂存区, 则回到版本库一模一样的状态
      • 已经添加到暂存区, 又做了修改, 则回到添加到暂存区后的状态
      • 总之,就是让这个文件回到最近一次git commitgit add时的状态。

    删除文件

    • rm test.txt 删除工作区文件2
    • git rm test.txt --> git commit -m "remove test.txt" 删除版本库中的文件

    远程仓库

    建立本地和GitHub连接

    • 注册GitHub账户

      • 反正我早就注册过了
    • 创建SSH Key

      • 先检查用户主目录下有没有.ssh目录, 以及这个目录里面有没有id_rsa(私钥)和id_rsa.pub(公钥)两个文件, 如果没有, 进行下面操作

      • ssh-keygen -t rsa -C "邮箱", 然后一路回车即可

    • 登录GitHub--->个人主页点头像--->Settings---->SSH and GPG keys--->SSH keys

      • Title随便输
      • Keys里面拷贝id_rsa.pub 里面的内容

    添加远程库

    • 在GitHub上创建一个learngit库

    • 在本地的learngit仓库下运行命令: git remote add origin git@github.com:MrBigBlake/learngit.git

      • origin 是远程库的默认叫法, 可以改成别的
    • 把本地库内容推送到远程库上 git push -u origin master

      • 把当前分组master推送到远程库

    从远程库中克隆

    • 先在GitHub上创建一个远程库gitskills---->勾选下面的Initialize this repository with a README
    • git clone git@github.com:MrBigBlake/gitskills.git 克隆一个本地库

    分支管理

    创建和合并分支

    • 创建dev分支, 然后切换到dev分支

      • git branch dev
      • git switch dev
      • 当然上面的两步可以简化为git switch -c dev
    • git branch命令查看当前分支

    • dev分支上对readme.txt做个修改, 加上一行Creating a new branch is quick., 然后提交

    • 切回master分支

    • 查看readme.txt, 发现刚添加的内容不见了

    • dev分支的工作成果合并到master分支上: git merge dev

    • 删除分支git branch -d dev

    小结

    Git鼓励大量使用分支:

    查看分支:git branch

    创建分支:git branch <name>

    切换分支:git switch <name> `

    创建+切换分支:git switch -c <name> `

    合并某分支到当前分支:git merge <name>

    删除分支:git branch -d <name>

  • 相关阅读:
    关于求 p_i != i and p_i != i+1 的方案数的思考过程
    poj 3041 Asteroids 二分图最小覆盖点
    poj 1325 Machine Schedule 最小顶点覆盖
    poj 1011 Sticks 减枝搜索
    poj 1469 COURSES 最大匹配
    zoj 1516 Uncle Tom's Inherited Land 最大独立边集合(最大匹配)
    Path Cover (路径覆盖)
    hdu 3530 SubSequence TwoPoint单调队列维护最值
    zoj 1654 Place the Rebots 最大独立集转换成二分图最大独立边(最大匹配)
    poj 1466 Girls and Boys 二分图最大独立子集
  • 原文地址:https://www.cnblogs.com/bigb/p/11761632.html
Copyright © 2011-2022 走看看