• 初识Git


    来源于微信公众号:大涛学编程

    什么是版本控制

    版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
    简单说就是用于管理多人协同开发项目的技术。

    集中式与分布式版本控制的区别

    • 集中式版本控制只有中心服务器拥有一份完整的代码,而分布式版本控制每个人电脑上就有一份完整的代码。

    • 集中式版本控制有安全问题,当中心服务器挂了的时候,所有人就无法工作了。

    • 集中式版本控制需要联网才能使用,入股网速较慢那么提交一个文件就慢的要死。而分布式版本控制不需要联网就能工作。

    • 分布式版本控制新建分支、合并分支的速度非常快,而集中式版本控制新建一个分支相当于复制一份完整的代码。

    Git与SVN的主要区别

    SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

    Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

    Git简介

    Git是免费、开源的
    最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper
    优点:

    • 适合分布式开发,强调个体。

    • 公共服务器压力和数据量都不会太大。

    • 速度快、灵活。

    • 任意两个开发者之间可以很容易的解决冲突。

    • 离线工作。

    缺点:

    • 模式上比SVN更加复杂。

    • 不符合常规思维。

    • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

    中心服务器

    中心服务器就是用来交换用户修改代码的,没有中心服务器其实也能工作,但是中心服务器能保持24小时开机状态。这样方便交换修改。GitHub就是一个中心服务器。

    工作区与版本库的概念

    Git的版本库有一个称为stage的暂存区以及最后的History版本库,History中存有所有分支,使用一个Head指针指向当前分支。新建分支其实就是新建一个指针指向时间线上的最后一个节点,并让head指针指向新分支,这时新分支就是当前分支。

    程序员写代码其实就是一个工作区,工作区里面的代码文件经过git add xxx命令,将xxx文件提交到stage暂存区,暂存区其实就属于版本库了。然后把暂存区中修改过的文件通过git commit 命令,修改过的文件被提交到当前分支,暂存区这时已经被清空。

    git reset --files 覆盖暂存区,用来撤销最后一次 git add
    git checkout --files 使用暂存区的修改覆盖工作目录,用来撤销本地修改

     

    git commit -a 直接把所有文件的修改添加到暂存区然后在执行提交
    git checkout HEAD --file 取出最后一次修改,可以用来进行回滚操作

     

    通常master分支是比较稳定的分支,只用来发布新版本;日常开发在dev(开发分支)进行。最终多个人提交合并到master分支。
     

    在一个分支上操作后,如果还没有将修改提交到分支上,此时进行交换分支上,那么另一个分支也能看到新的修改
    这是因为分支共用一个工作区的缘故。

    当master分支出现一个bug急需修复,但是自己在dev分支上的任务还没做完,可以使用git stash 将dev分支上的修改存储起来。此时当前工作区的所有修改都会被存到栈上,也就是说当前工作区是干净的,没有任何未提交的修改,此时就可以安全的切换到其它分支上了。

    .gitignore文件

    忽略以下文件:

    • 操作系统自动生成的文件

    • 编译生成的中间文件比如Java生成的.class文件

    • 自己的敏感信息比如存放口令的配置文件

    常用的git命令

    • git init  新建一个仓库,在当前路径下 生成 .git文件

    • git clone /path/repository 克隆本地仓库

    • git clone username@host:/path/to/repository  克隆远程仓库

    • git status  查看工作区下修改的文件

    • git blame $file 文件改变的时间和内容

    • git branch  列出本地所有分支
      -git branch -a 查看远程和本地的所有分支

    • git branch -d $branch 删除指定分支
      -git branch -r 查看远程所有分支

    • git branch $branch 创建一个名字为$branch的分支

    • git commit -a 提交本地所有改变de 文件

    • git checkout master 切换到master分支

    • git commit -m “提交信息” 提交到历史版本库携带提交信息

    • git push origin master push修改文件到远程仓库

    • git remote add origin 连接远程仓库

    • git pull 使用远程仓库更新本地存储库

    • git push -u origin master -f强制一次性将本地分支master推向远程分支origin

    更多git详细命令 :
    http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf
    码云的git基础命令(https://gitee.com/all-about-git)

    解决码云出现git@gitee.com: Permission denied (publickey).

    1)、重新生成ssh
    ssh-keygen -t rsa -C “这里是你的账号”
    2)、查看你的 public key
    cat ~/.ssh/id_rsa.pub
    (以ssh-rsa 开头,以账号的注册邮箱结尾的)
    3)、将它添加到码云,添加地址

    https://gitee.com/profile/sshkeys​​​​​​​

    4)、终端输入ssh -T git@gitee.com
      完成设置。

    参考

  • 相关阅读:
    怎样应对突发性的开发需求
    ASP.NET过滤HTML标签只保留换行与空格的方法
    sqlserver 各种判断是否存在(表名、函数、存储过程等)
    Timing advance of GSM(时间提前量)
    对.NET中Hashtable和ArryList的理解
    GPS原始经纬度转百度经纬度
    baidu经纬度坐标与google经纬度坐标都转换
    .NET资料之-根据两点经纬度计算直线距离
    .net处理JSON简明教程
    在asp.net中要不使用其他插件的情况下只能使用定时器来检查, 并执行任务.
  • 原文地址:https://www.cnblogs.com/itjiangpo/p/14181405.html
Copyright © 2020-2023  润新知