版本管理系统Git

关注公众号“轻松学编程”了解更多。

git下载链接:https://pan.baidu.com/s/12vJn-K0lK9XlkVQbNe8S-A 密码:m4mt

图形界面客户端链接:https://pan.baidu.com/s/1SM-qdo_JZluotoeAoTNyBw 密码:picl

常用图形界面:SourceTree

Git常用基本命令

git checkout 分支名    #切换分支
git checkout -b 分支名 #创建分支并切换到该分支
git push origin --delete 分支名 #删除远程分支
git branch -a #查看所有分支
git branch -D 分支名 #删除本地分支,注意先切换到到其它分支

将master分支内容提交合并到dev分支

git checkout master  #切换到本地分支
git pull #拉取远程文件到本地
git add . #提交到本地
git commit -m 'merge'
git checkout dev #切换到dev分支
git merge master #合并
git push origin dev #推送到远程分支
1、版本控制工具优势
  • 查看版本历史记录

    • 查看成长记录
    • 版本回退
    • 明确责任人
  • 多人协作开发
    • 同步团队其它成员的代码
    • 在自己的分支上工作
  • 中心化和分布式
    • 中心化(SVN):代码管理服务器在一台核心服务器上,所有人都必须和代码服务器保持网络连通
    • 分布式(Git):中心仓库是GitHub,可以有很多本地仓库
2、GitHub的注册与使用
  • Clone与Fork

  • Download

  • Git的安装与配置

    • 下载:https://git-scm.com/download/
    • git config --global user.name “xxx”
    • git config --global user.email “xxx”
3、Git常用命令
  • 本地仓库

    • 创建本地仓库

      • cd xxx #这里的xxx路径,是Linux风格路径,Windows上可以使用拖拽文件夹的方式自动形成
      • git init
    • 本地提交
      • git add xxx
      • git commit xxx -m “xxx”
    • 比较和查看日志
      • git status
      • git diff
      • git log
        • git log --pretty=oneline
      • git reflog #查看所有分支的所有操作记录(包括被删除的)
    • 版本回滚
      • git reset --hard

        • HEAD^
        • HEAD^^
        • HEAD~100
        • 具体版本号
      • git checkout – filename #检出文件(注意空格)
        • 如果add但没有commit时,检出的是缓存区的内容
        • add且commit了时,检出的是版本区的内容
        • 优先检出缓存区而不是版本区
    • 添加忽略
      • touch .gitignore
      • vim .gitignore
        • i // 进入编辑模式
        • esc,: // 进入命令模式
        • 在冒号后输入wq // 保存退出命令
  • 添加公钥到github账号
    • ssh-keygen -t rsa -C “your email”
    • cat id_rsa_pub
    • ssh-agent bash
      • 启动ssh-agent
    • ssh-add sirouyang
      • 绑定私钥
    • ssh -T git@github.com
      • 秘钥配对测试
  • 本地仓库关联远程仓库
    • cd local_repo_path
    • git remote add origin your_repo_address
    • git remote rm origin
    • git pull origin master
      • –allow-unrelated-histories #同意合并不相干的历史时
    • git push origin master
  • 操作远程仓库
    • git clone your_repo_address

      • #注意克隆下来的分支只是master分支,在分支上工作需要克隆后再做一下拉取分支的工作
    • git add .
    • git commit . -m “xxx”
    • git push origin master
  • 分支
    • 分支相关命令

      • -----↓创建和切换分支-----
      • git branch #查看所有分支
      • git branch 分支名 # 创建本地分支
      • git checkout 分支名 #切换到指定分支
      • git checkout -b 分支名 #创建并切换到分支
      • -----↓删除分支-----
      • git branch -d 分支名 #删除本地分支
      • git push origin --delete 分支名 # 删除远程分支
      • -----↓推拉分支-----
      • git pull origin 分支名 #拉取分支
      • git push origin 分支名 #推送分支
      • git push --set-upstream origin 分支名 #推送分支
      • -----↓合并分支-----
      • git merge 分支名 #合并分支(要先checkout到主分支)
      • -----↓查看合并历史-----
      • git log --graph #查看分支合并图
      • git log --graph --all // 命令行查看分支合并图
      • gitk --all // gitk工具查看分支合并图
      • git gui(启动后:repository–>visual all branch history) // gui工具查看分支合并图
    • 分支合并策略
      • master只要稳定上线版
      • dev是开发版,稳定后合并到master
      • 其余分支一边开发一边合并到dev
    • 分支案例
      • 张三克隆项目
      • 张三创建分支并push
      • 张三独自开发、提交、push
      • 历时做和张三相同的事情
      • dev分支合并张三分支
      • dev分支push
      • master合并dev分支
      • master分支push
4、解决冲突
  • 冲突案例

    • master提交公共资源
    • 张三拉取并修改公共资源
    • 张三提交并push分支
    • 李四拉取并修改公共资源,意见与张三不一致
    • 李四提交并push分支
    • dev合并张三分支
    • dev合并李四分支
    • dev处理冲突
    • dev提交并push分支
    • master合并dev分支
    • master分支push
  • 两个成员修改了相同文件的相同代码段,冲突爆发时机:
    • dev进行合并时
    • 拉取冲突分支的代码
    • 相同分支上的不同账号,后提交的那一个会发生冲突
  • 解决:删除冲突标记+修改为意见统一的代码
5、标签
  • git tag # 查看所有标签
  • git tag v1.0 # 给当前版本打标签,名称是任意的
  • git tag -d v1.0 # 删除指定标签(它对应的版本序号依然是存在的)
  • git push origin v1.0 # 推送标签到远程仓库
  • git push origin --tags # 一次性推送多个标签到远程
  • git checkout v1.0 # 切换到指定标签所对应的版本
  • git show v1.0 # 查看标签信息
6、多人协作开发
  • 添加公钥到github账号

    • ssh-keygen -t rsa -C “your email”
    • cat id_rsa_pub
    • ssh -T git@github.com // 测试提交权限
  • 添加成员公钥
    • 1、生成秘钥对
    • 2、让协作的github账号添加你的公钥
    • 3、切换Git注册的私钥
      • ssh-agent bash // 启动秘钥管理客户端
      • ssh-add your_private_key // 切换Git注册的私钥
    • 4、ssh -T git@github.com // 测试提交权限,测试通过则已经具有协作账号的提交权限
    • 团队其它成员如法炮制
  • 工作流程
    • 创建远程仓库
    • 创建dev分支,创建成员分支
    • 可选:为团队所有成员创建分支,他们各自clone并pull自己的分支
    • 各自克隆仓库到本地
    • 切换到各自自己的分支上工作
    • 每天至少一次提交代码到本地仓库
    • dev分支定期合并成员分支,并提交测试
    • dev分支通过测试后合并到master上线

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

关注我,我们一起成长~~

【参考文章】
https://blog.csdn.net/u010986776/article/details/79827624
https://blog.csdn.net/u010986776/article/details/79827399
https://blog.csdn.net/u010986776/article/details/79827082
https://blog.csdn.net/u010986776/article/details/79823699
https://blog.csdn.net/u010986776/article/details/79823616

git版本管理系统使用的更多相关文章

  1. 版本管理系统:svn和git

    svn是常用的版本管理系统,解决团队协作开发和版本管理问题, 一.服务器端:是一个文件存储仓库,可以设置用户并管理其访问的权限.主要功能包括 ①设置文件存储路径,是管理文件版本的基础 ②设置用户:可以 ...

  2. git分布式版本管理系统

    Git是分布式版本管理系统Svn是集中式版本管理系统 git速度快,适合大规模协同开发 什么是分布式版本管理系统 假如有10个人,每个人的代码库都是独立的,自己想进行代码提交回滚都可以,无需链接中央服 ...

  3. 详解在Visual Studio中使用git版本系统[转]

    这篇教程的预期,是希望没有任何版本使用基础的新手也可以掌握,所以细节较多,不当之处,欢迎指正. 一 .安装 git 开发工具 如果要使用 git 进行版本管理,其实使用 git 命令行工具就完全足够了 ...

  4. Git版本控制软件结合GitHub从入门到精通常用命令学习手册(转)

    简要参考:http://www.tuicool.com/articles/mEvaq2 http://gitref.org/zh/index.html GIT 学习手册简介 本站为 Git 学习参考手 ...

  5. 详解在visual studio中使用git版本系统(图文)

    很多人已经在使用git(或正在转移到git上),在github.com上,也看到园子里不少同学的开源项目,非常不错.但相关教程似乎不多,所以趁着我自己的开源项目源码托管(https://github. ...

  6. 在visual studio中使用git版本系统(zz)

    第一部分: 安装 git 开发工具 如果要使用 git 进行版本管理,其实使用 git 命令行工具就完全足够了,图形化工具(无论是 git extentions ,还是TortoiseGit),都只不 ...

  7. 【转】详解在visual studio中使用git版本系统(图文)

    http://blog.csdn.net/wojilu/article/details/6976230 很多人已经在使用git(或正在转移到git上),在github.com上,也看到不少国内同学的开 ...

  8. Git版本控制系统VCS

    Git版本控制系统VCS 一.版本控制系统基本情况说明 版本控制是一种记录一个或者若干个文件内容的变化,以便将来查阅特定版本修订情况的系统 1.作用 记录文件的所有历史变化 随时可回复到任何一个历史状 ...

  9. Dubbo入门到精通学习笔记(三):持续集成管理平台之SVN版本管理系统的安装和使用

    文章目录 持续集成管理平台介绍 持续集成介绍 持续集成管理平台的组成 持续集成实践介绍 即将学习 SVN版本管理系统的安装 安装 Subversion + Apache 安装 jsvnadmin 简单 ...

随机推荐

  1. CentOS7设置内网时间同步

    1.yum 安装 NTP服务器 [root@master ~]# yum -y install ntp 2.启动ntpd服务 [root@master ~]# systemctl start ntpd ...

  2. Layman 使用ffmpeg-php扩展库实现视频截图(默认图)

    这几天做项目,其中一个需求是用户上传视频文件到服务器,然后服务器自动截取该视频的一帧作为该视频对应的缩略图,服务器端语言采用php编写,找了半天资料,发现ffmpeg-php可以满足该需求,所以下面简 ...

  3. 003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程

    003 01 Android 零基础入门 01 Java基础语法 01 Java初识 03 Java程序的执行流程 Java程序长啥样? 首先编写一个Java程序 记事本编写程序 打开记事本 1.wi ...

  4. Java知识系统回顾整理01基础01第一个程序03Eclipse下载安装

    Eclipse是最流行的java 集成开发环境IDE(Integrated Development Environment) 下载安装Eclipse两种方式 一.方式1:Eclipse官网下载安装 链 ...

  5. C++中头文件简介(stdio.h & chrono)

    参考: 1. https://baike.baidu.com/item/stdio.h 2. https://www.cnblogs.com/jwk000/p/3560086.html 1. stdi ...

  6. Trie树【字典树】浅谈

    最近随洛谷日报看了一下Trie树,来写一篇学习笔记. Trie树:支持字符串前缀查询等(目前我就学了这些qwq) 一般题型就是给定一个模式串,几个文本串,询问能够匹配前缀的文本串数量. 首先,来定义下 ...

  7. 全方位剖析 Linux 操作系统,太全了!!!

    Linux 简介 UNIX 是一个交互式系统,用于同时处理多进程和多用户同时在线.为什么要说 UNIX,那是因为 Linux 是由 UNIX 发展而来的,UNIX 是由程序员设计,它的主要服务对象也是 ...

  8. STM32之旅1——LED

    STM32之旅1--LED 学习了51单片机后,就要接触到更高级一点的单片机了,比如STM32,ST也有很多款单片机,现在用比较基础的学习--STM32F103RCT6. LED驱动 hal库的使用比 ...

  9. 史上最全Python快速入门教程,满满都是干货

    Python是面向对象,高级语言,解释,动态和多用途编程语言.Python易于学习,而且功能强大,功能多样的脚本语言使其对应用程序开发具有吸引力.Python的语法和动态类型具有其解释性质,使其成为许 ...

  10. Flask实现websocket

    from flask import Flask,request user_socket_dict = {} app = Flask(__name__) @app.route("/conn_w ...