zoukankan      html  css  js  c++  java
  • git版本控制系统更新

    版本控制系统:

    一、概念:

    版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

    二、版本控制系统分类

    1、本地版本控制系统

    在本地记录文件内容变化情况。

    缺点:不能进行多人协作

    2、集中式版本控制系统

    有一个中央服务器,专门用于管理代码,所有人通过中央服务器,进行代码同步。【代表:SVN 版本控制】

    优点:解决了多人协作问题

    缺点:太过于依赖中央服务器,与网络。

    3、分布式版本控制系统

    分布式版本控制系统就是一个专门用于管理代码的远程仓库,每个人本地都有一个远程仓库的完整镜像。

    优点:解决多人协作开发问题,不是特别依赖远程仓库,不是特别依赖网络。【也不是不依赖】

    三、git 基本入门

    注意 git 的安装:(1)不能安装在中文目录(2)最好不使用桌面管理软件【360,百度杀毒等等】

    1、git 的三个区

    工作区:我们写代码的地方

    暂存区:暂时存储的区域,git 中的代码不能直接从工作区存储到仓库中,需要现将其添加到暂存区,再从暂存区添加到仓库【目的是为了避免错误操作】

    仓库区:将暂存区的代码转存到 git 仓库中,生成版本号。

    2、git 基本命令

    【2.1】git status:查看文件状态【红色表示再工作区,绿色表示再暂存区 】

    【2.2】git status -s: 简化日志输出格式

    【3.1】git add 文件名/目录名:将文件从工作区添加到暂存区

    【3.2】git add . :将当前目录下所有文件一次性提交到暂存区 【git add -A 或 git add -all】

    # 将index.html添加到暂存区
    git add index.html
    
    # 将css目录下所有的文件添加到暂存区
    git add css
    
    # 将当前目录下所有的js文件添加到暂存区
    git add *.js
    
    # 添加当前目录下所有的文件
    git add .
    git add -A
    git add --all
    

    【4.1】git commit -m "提交说明":将文件从暂存区添加到仓库区,生成版本号。

    【4.2]git commit -a -m "提交说明"(快速提交,之前有提交过文件)

    【4.3】git commit --amend -m "提交说明":如果提交说明输入错了,修改使用命令。

    # 将文件从暂存区提交到仓库
    git commit -m "提交说明"
    
    # 如果不写提交说明,会进入vi编辑器,没有写提交说明,是提交不成功的。
    git commit   # 需要使用vi输入内容
    
    # 如果是一个已经暂存过的文件,可以快速提交,如果是未追踪的文件,那么命令将不生效。
    git commit -a -m '提交说明'
    
    # 修改最近的一次提交说明, 如果提交说明不小心输错了,可以使用这个命令
    git commit --amend -m "提交说明"
    

    【5】git config(配置)

    【5.1】第一次提交配置:

    git config user.name 你的目标用户名

    git config user.email 你的目标邮箱名

    【5.2】 使用--global 参数,配置全局的用户名和邮箱,只需要配置一次即可。推荐配置 github 的用户名和密码

    git config --global user.name *****
    git config --global user.email ****

    【5.3】git config --list:查看配置信息

    【6.1】git log:查看提交的日志

    【6.2】git log --oneline:查看简洁的日志

    3、git 的对比

    【1】git diff:查看工作区与暂存区提交内容的不同

    【2】git diff --cached:查看暂存区与仓库区内容的不同

    【3】git diff HEAD:查看工作区与仓库区内容的不同(HEAD 表示最新一次的提交)

    【4】git diff 版本 1 版本 2:查看两个版本之间的不同

    4、git 的重置

    【1】git reset:版本回退,将代码恢复到提交过得某一个版本中

    【2】git reset --hard 版本号:将代码回退到某一个指定的版本(置三个区)

    【3】git reset --soft 版本号:只重置仓库区

    【4】git reset --mixed 版本号:重置仓库区与暂存区(默认)

    【5】git reflog:查看所有版本信息(使用git log只能看到当前版本之前的信息)

    【6】git reset --hard head~1:将版本回退到上一次提交状态

    • ~1:上一次提交
    • ~2:上上次提交
    • ~0:当前提交

    5、git 忽视文件

    【忽视文件创建需要在编译器中创建,不然会报错】

    在仓库中,有一部分文件是不想被 git 管理的,比如数据的配置密码,写代码的一些思路等等,git 可以通过配置忽略一些文件,这样文件就不用提交了。

    【1】方法:注意:该文件是可以将自己忽视的

    在仓库根目录下创建一个.gitignore 文件,文件名固定。将不需要被 git 管理的文件路径添加到.gitignore 中。

    忽视.gitignore 文件 (.gitignore)

    # 忽视idea.txt文件
    idea.txt
    
    # 忽视.gitignore文件
    .gitignore
    
    # 忽视css下的index.js文件
    css/index.js
    
    # 忽视css下的所有的js文件
    css/*.js
    
    # 忽视css下的所有文件
    css/*.*
    # 忽视css文件夹
    css
    

    6、git 分支操作

    在 git 中,分支实质上就是一个指针,每次代码提交后,这个分支指针就会向后移动,保证一直指向最后一次提交的版本。git 中使用 HEAD 指向当前分支

    【1】每次 commit 提交,都会在仓库区生成一个新的版本

    【2】在第一次生成版本后,会自动创建一个 master 分支,指向当前版本

    【3】所有的分支,本质上就是指针

    【4】默认有一个 HEAD 指针永远指向当前分支

    git 分支命令

    【1】git branch 分支名称:创建分支。

    【2】git branch:查看所有分支。

    【3】git checkout 分支名称:切换分支(HEAD 指针指向另一个分支)

    当前分支任何操作不会影响其他分支。除非进行分支合并

    提交代码时,会产生版本号,当前分支会指向最新的版本号。

    【4】git checkout -b 分支名称:创建并切换分支(创建一个新分支,将 HEAD 指针指向当前分支)

    【5】git branch -d 分支名称:删除分支(注意:不能在当前分支删除当前分支,需要切换到其他分支,才可以删除)。

    【6】git merge 分支名称:将其他分支内容合并到当前分支。

    06-分支的基本操作

    07-分支强化

    git 合并冲突

    【1】对于同一个文件,如果有多个分支要合并,容易出现冲突。

    【2】合并分支时,出现冲突需要手动处理,在进行提交。(一般将自己代码放在冲突代码之后即可)。

    08-分支冲突

    四、git 远程仓库

    1、github 与 git【github 中文版是码云】

    git 与 github 没有直接的关系。

    • git 是一个版本控制工具。

    • github 是一个代码托管平台,开源社区,是 git 的一个远程代码仓库。

      注意: 创建 git 项目时,不能有中文。

    git clone

    • 作用:克隆远程仓库的代码到本地
    • git 克隆默认会使用远程仓库的项目名字,也可以自己指定。需要是使用以下命令:git clone [远程仓库地址] [本地项目名]

    git push

    • 作用:将本地仓库中代码提交到远程仓库
    • git push 仓库地址 master 在代码提交到远程仓库,注意 master 分支必须写,不能省略

    git pull

    • 作用:将远程的代码下载到本地
    • 通常在 push 前,需要先 pull 一次。
    # 获取远程仓库的更新,并且与本地的分支进行合并
    git pull
    

    git remote

    每次 push 操作都需要带上远程仓库的地址,非常的麻烦,我们可以给仓库地址设置一个别名

    # 给远程仓库设置一个别名
    git remote add 仓库别名 仓库地址
    git remote add jepson git@github.com:jepsongithub/test.git
    
    #删除jepson这个别名
    git remote remove jepson
    
    #git clone的仓库默认有一个origin的别名
    

    SSH 免密码登陆

    git 支持多种数据传输协议:

    • https 协议:https://github.com/jepsongithub/test.git 需要输入用户名和密码
    • ssh 协议:git@github.com:jepsongithub/test.git 可以配置免密码登录

    每次 push 或者 pull 代码,如果使用 https 协议,那么都需要输入用户名和密码进行身份的确认,非常麻烦。

    • github 为了账户的安全,需要对每一次 push 请求都要验证用户的身份,只有合法的用户才可以 push
    • 使用 ssh 协议,配置 ssh 免密码,可以做到免密码往 github 推送代码

    五、SSH 免密码登录配置

    注意:这些命令需要在 bash 中敲

    • 1 创建 SSH Key:ssh-keygen -t rsa
    • 2 在文件路径  C:用户当前用户名  找到  .ssh  文件夹
    • 3 文件夹中有两个文件:
      • 私钥:id_rsa
      • 公钥:id_rsa.pub
    • 4 在  github -> settings -> SSH and GPG keys页面中,新创建 SSH key
    • 5 粘贴 公钥  id_rsa.pub  内容到对应文本框中
    • 5 在 github 中新建仓库或者使用现在仓库,拿到git@github.com:用户名/仓库名.git
    • 6 此后,再次 SSH 方式与 github“通信”,不用输入密码确认身份了
  • 相关阅读:
    Maven MicroTip: Get sources and Javadocs
    重定向标准流
    Unix: How to redirect stderr to stdout
    ruby doc
    1. 数据流重定向(stdin,stdout,stderr)
    jruby.org十多M的jar都是放到amazon s3上提供服务的
    试试rvm
    ruby doc
    Velocity用户手册中文版
    对Windows Mobile Timer不准的总结
  • 原文地址:https://www.cnblogs.com/bug-jin/p/10263950.html
Copyright © 2011-2022 走看看