zoukankan      html  css  js  c++  java
  • github管理代码

    git介绍

    Git是目前开源软件使用最多的版本管理软件,是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。然后将更新提交到远程仓库。

    安装配置git

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

    远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置。

    1、设置Git的user name和email:

    git config --global user.name "zhizhi"
    git config --global user.email "zhizhi@gmail.com"

    2、生成SSH密钥过程:

    ssh-keygen -t rsa -C "username"  //可以输入计算机名或邮箱地址或其他你想要设置的用户名

    图1 生成密钥过程示意图

    切换到 ~/.ssh文件夹,会发现两个文件:id_rsa和id_rsa.pub,用记事本打开id_rsa.pub文件,复制 id_rsa.pub文件内容到 github->settings->SSH and GPG key->new ssh->key

    图2 将密钥添加到github

    3、测试ssh设置是否成功

    图3 连接成功

    建仓管理代码基本操作命令

    开始之前,先理解以下几个名词:

    工作区(Wroking Directory)

    就是你在电脑里能看到的目录,比如我的demo文件夹就是一个工作区:

    版本库(Repository)

    本地文件夹在初始化之后会生成一个隐藏文件夹.git,这个不算工作区,而是Git的版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

    图4 git管理代码的工作示意图

    1、在github上新建仓库,用来存放项目

    2、在本地新建项目,上传到github仓库

      ①  选择本地项目文件夹目录,初始化代码仓库,并关联到远程仓库

    git init // 初始化代码仓库 把这个目录变成Git可以管理的仓库
    // 1、https关联
    git remote add origin https://github.com/<github用户名>/<仓库名>.git
    // 2、ssh关联
    git remote add origin git@github.com:<github用户名>/<仓库名>.git

      ② 添加文件到仓库

    git status              // 将显示出做了什么改动,例如modify、add和remove
    git diff                // 查看文件修改了哪些内容
    git add                 // 将文件的改动情况提交到暂存区
    git commit -m "log"     // 将暂存区中的内容提交到本地仓库的master分支
    git commit -m <message> // 提交添加的文件  mssage为描述信息

      ③ 将代码提交到远程仓库

    git push origin master  // 将代码提交到远程仓库

      ④ 将远程代码更新到本地

    git fetch   // 拉取远程仓库的修改
    git pull origin master = git fetch && git merge   // 将远程仓库的修改更新到本地 并将本地修改提交到远程仓库
    git log    // 查看提交记录
    git log --pretty=oneline  // 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline 参数

    3、从远程仓库clone项目,在本地修改提交,协作完成任务

      ① clone远程项目

    // 两种方式进行克隆
    // 使用https
    git clone https://github.com/<github用户名>/<仓库名>.git
    // 使用ssh
    git clone git@github.com:<github用户名>/<仓库名>.git

      其余操作同在本地新建项目。

    4、修改回退

      ① 只修改了代码,没有add到暂存区

    git checkout --filename // 回退工作区文件的修改,回退待版本库该文件的状态

      ② 已经将修改add到暂存区

    git checkout --filename // 回退工作区文件的修改,回退待暂存区中该文件的状态
    git reset HEAD <file>   // 把暂存区的修改撤销掉

      ③ 已经将修改从暂存区commit到本地仓库

    git reset --hard HEAD^   // 回退到上一个版本

      在git中HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,如果版本过多,搞不清到底时第几个版本,也可以直接添加版本号入参,回退到指定的版本号

    git reset --hard  commit_id   // commit_id为版本号
    git long                      // 查看提交历史,确定版本号

      入果回退到之前的版本之后,又想回到较新的版本,可以通过git reflog查看历史命令,确定回到较新的那个版本号

    图5 版本回退示意图

     5、分支管理

    火影里,鸣人利用影分身来进行不同的修行,最后不同的影分身合并的本体之后,他们所进行的修行也都合并到了本体,提高了修行效率。git在协同开发的时候,也有同样的分支管理的功能。

    Git的分支是与众不同的,无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本库是1个文件还是1万个文件。

    分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

    现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

    git checkout -b dev   // 创建一个新的分支并切换到新的分支
    git checkout master   // 切回到master分支
    git merge dev         // 把dev分支的工作成果合并的master分支上
    git branch -d dev     // 删除dev分支

    6、遇到的问题

      ① 更新远程仓库失败

    图6 更新报错

    好像时ssh连接出现了问题,在测试连接是否成功的时候,成功提示信息有一句话“but git doesn't provide a shell access”,所以我们更改github的连接方式,从之前的ssh方法转为https方法。具体操作如下:

    git config --local -e   // 编辑本地git配置

    图7 修改配置文件

    将url = git@github.com:你的用户名/仓库名.git

    改为

    url = https://github.com/你的用户名/仓库名.git,再次提交到远程仓库就会成功

    图8 提交成功

  • 相关阅读:
    Atom+latex+中文环境
    pytorch中,不同的kernel对不同的feature map进行卷积之后输出某一个channel对应的多个feature map如何得到一个channel的feature map
    Ubuntu16.04上添加用户以及修改用户所属的组
    shell批处理文件,并将运算结果返回
    pytorch如何能够保证模型的可重复性
    Linux用管道命令对文件的移动
    python中调用多线程加速处理文件
    Python中random模块在主函数中设置随机种子是否对于调用的函数中的随机值产生影响?
    pytorch统计模型参数量
    pytorch使用tensorboardX进行网络可视化
  • 原文地址:https://www.cnblogs.com/xxyxt/p/11410870.html
Copyright © 2011-2022 走看看