您的位置:首页 > 编程语言 > Python开发

Python——代码版本管理-Git和GitHub

2018-01-20 11:36 197 查看
目录:

1.什么是Git

2.Git安装配置

3.Git工作流程

4.Git工作区、暂存区和版本库

5.创建仓库

6.基本操作

7.分支管理

8.查看提交历史

9.标签标记

10.远程仓库

11.服务器搭建

12.开发工具继承

13.案例:通过SSH协同开发应用

1.什么是Git

1-1.Git
Git是一个开源的分布式版本控制系统,用于敏捷高效的处理任何项目的版本问题。Git是Linux Torvalds 为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

Git与常用的版本控制工具cvs、svn等不同,它采用了分布式版本库的方式。不必服务器端软件支持,它是主机本身既是客户端又是服务器。

1-2.关于项目版本管理

项目在开发过程中,经常会出现多人分工协作进行项目分发并开发整合的过程,所以项目在刚开始流行的时候经常会出现一些协作开发的同步的问题,同时存在项目整体进度的控制和管理的问题,所以在程序的开发行业衍生出来的版本管理工具。

版本管理工具,首先是一个内容管理工具,可以将项目的内容信息存放在版本管理服务器上方便项目组人员进行访问和查询修改。版本管理具有里程碑意义的主要有三个阶段:

cvs阶段——>svn阶段——>Git阶段

1-2-1.cvs阶段

项目搭建开发的过程中,每次提交项目都会将整个项目提交到服务器进行保存,服务器存储着项目的N个备份,开发过程中的协作效率低下,占用空间较大,同时也出现了各种传输问题,所以慢慢淡出了行业。

1-2-2.SVN阶段

考虑到cvs的缺陷,开发人员根据项目的实际情况,研发出专门针对项目版本控制的软件Subversion(简称SVN),SVN同样也是搭建服务器,让项目组成员将数据存储在服务器上,但是每次改动并提交的时候,SVN服务器并不重新保存整个项目的完整信息,而是和原来的项目进行对比,只保存改动的信息,这样就大大较少了空间的占用。所以至今为止,有很多公司依然选择使用SVN作为公司内部项目协作额版本控制软件。

1-2.3Git阶段

前面的CVS和SN都是基于一个服务器的,如果脱离服务器,项目的版本保存就没有了任何意义。Git恰恰处理了这样的问题,Git是一个分布式的版本控制系统,在Git中即使用户离线,也能进行项目的提交和更新操作,此时只是保存在本机的暂存区,等到下次连线到GitHub(类似服务器角色)时进行的整体的同步操作。

Git  VS  SVN

① Git是分布式的,SVN不是

②Git是按照元数据的方式存储内容,SVN是按照文件的形式存储

③Git和SVN中的分支不同

④Git没有全局版本号,SVN有

⑤Git内容的完整性由于SVN

2.客户端安装配置

2-1.使用Git之前,PC上需要安装Git
支持Linux/Unix.Solaris、Mac和Windows平台上运行
Git各平台安装包下载地址为:http://git-scm.com/downloads
2-2.Git开发人员信息配置
Git提供了一个git config 工具,专门用于配置和读取相应的工作环境变量:
   ①  etc/gitconfig文件,系统中所有的用户都普遍适用的配置,如果适用get config时添加--system选项,修改的就是这个文件;
   ②  ~/.gitconfig文件,用户目录下的配置文件,只适用于当前用户,使用get config时添加--global选项,修改的就是这个文件;
   ③  /config文件,当前项目的.git目录中的配置文件,配置只是针对当前项目有效。
信息配置操作:
安装好Git之后,点击鼠标右键即可看到有Git bush选项,点击即可进入Git命令行操作。
使用命令:
git  config  --global user.name "lyh"
git  config  --global user.email "*****@***com"



即可依次设置用户名和邮箱信息,此信息用于版本提交时记录提交人信息。
查看开发人员信息
git  config  --list



2-2.Git工作流程

常规工作流程如下:

克隆Git资源作为目录

在克隆的资源上添加或者修改文件

如果是其他人修改过的文件,可以进行更新文件的操作

提交前的文件修改信息检查

提交修改

修改完成后,如果发现错误,撤回提交并再次修改后提交

一些常用的命令如下:

创建秘钥:ssh   keygen   -t     rsa    -C   "邮箱名“”

git  init  dictoryname创建本地仓库,暂存区
git  status查看当前工作区文件状态(管理|脱管)
git add  file将某个脱管的文件添加到Git版本管理中
 git commit file -m ‘提交的注释’提交修改后的文件,并必须提交注释
git log查看所有提交信息
gti diff查看工作区与暂存区文件的不同,也就是commit之后、push之前
git clone “服务器仓库地址”从远程服务器克隆项目到本地暂存区
git branch查看所有分支,绿色带星号为当前所在分支
git branch  “新分支名称"增加一个分支
git chechout "分支名称"切换到某个指定分支
git merge "另一个分支名称“将另一个分支的代码合并到当前分支
git  branch -d “分支名称”删除指定分支
3.工作区、暂存区及版本库 

 基本概念 

 工作区:个人 PC 中能看到的文件目录结构 

 暂存区:stage/index,一般存放在.git/index 中,所以 git 中的暂存区也会 称为索引

  版本库:工作区中的.git 隐藏文件,不算是工作区,而是 Git 的版本库。 

当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新, 同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的 ID 被记录在暂存区的文件索引中。  

 

当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。  

 

当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支 指向的目录树所替换,但是工作区不受影响。  

 

当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区 则不做出改变。  

 

当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用 暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂 存区的改动。  

 

当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令 时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中 的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂 存区中未提交的改 动。  

4.Git 本地操作 

 创建工作目录——本地仓库 

 git init 

 

Git 使用 git init 命令初始化一个 git 仓库。 git 很多命令都是在仓库中运行的,git init 执行完成后 Git 会在对应的目录中创建一 个.git 隐藏文件夹,文件夹中的文件包含了 git 所有元数据,其他的项目文件夹保持不变 

 

 使用当前文件夹作为 git 仓库  进入对应的文件夹中,执行 git init 命令即可 

 

 指定文件夹作为 git 仓库  执行 git init myrepo; 

 

 执行完成后,myrepo/文件夹下会出现一个.git 目录, 

 

创建好的项目文件夹中,就可以通过 git add file_name 命令,就可以告诉 git 对指定 的文件进行跟踪操作。 

 

最后对修改的文件进行提交操作 

 

 

 克隆项目到工作目录 所谓克隆项目,就是创建远程 git 仓库中的项目副本  git clone <repo>  git clone <repo> <directory> 案例操作 

 

 

4-2 基本操作【核心】 

 获取与创建项目命令  git init [<directoryName>]:初始化创建项目工作空间  git clone <gitURL> [projectName]:克隆项目 

 

 添加文件到缓存中——暂存区  git add <fileName> 

 

 

 查看上次提交之后的修改状态  git status 

 

 

 查看具体的修改信息  git diff:查看尚未缓存的改动{尚未 add 操作}  git diff --cached:查看已经缓存的改动  git diff HEAD:查看已经缓存和未缓存的所有改动  git diff --stat:查看摘要信息 

 

 

 添加内容到仓库中  git commit:将缓存区中的内容添加到仓库中。  git 为你的每一个提交记录名字和电子邮箱地址【教程开头使用 git config 配 置的用户信息】  git commit -m “注释内容”:-m 选项用于提交时添加注释内容 

 

 

 同时 git 提供了-a 选项,用于提示提交简略信息 

 

 

 

 取消缓存内容  git reset HEAD:用于取消用户已经缓存的内容 修改 README 和 file2 文件 

 

取消 file2 缓存 

 

 

 从缓存区中移除  git rm <fileName>:将指定的文件从缓存区中移除  重命名并重新添加到缓存中  git mv <fileName> <newFileName>:将指定的文件 fileName 重新指定新 的名称 newFileName,并自动通过 add 将新的文件添加到的缓存区中 

 

4-3 分支管理 

很多的版本控制工具都是支持分支操作的,使用分支操作的意义是从开发的主线上分离开达 到不影响主线任务的同时进行功能开发 项目一旦创建,就会有一个主线分支 master,开发过程中,如果需要其他的并行开发 的需要,就会创建新的分支进行异步开发。 

 

>> 列出分支  git branch 

 

备注:前面有梅花图案,表示当前正在操作的分支。 >> 创建分支  git branch [branch_name] 

 

备注:使用 git branch 命令,添加一个分支 shopcart。再列出当前所有分支,可以看到有两个分 支,并且当前是工作在 master 主分区中。 

 

>> 切换分支  git checkout [branck_name] 

 

备注:通过 git checkout 命令切换分支,切换完成后,通过列出分支命令 git branch 看到当前工 作在 shopcart 分支 

 

>> 合并分支  git merge 

 

备注:所谓合并分支,是指将指定分支的代码和当前分支进行合并,完成代码的共享,这里的 git merge 合并的是分支的内容。并不是将两个分支变成一个分支。 

 

>> 删除分支  git branch –d [branch_name] 

 

备注:通过 git branch -d <b_name>可以直接将一个分支从 git 工作流中删除。 

 

4-4查看提交历史 

使用 git 提交/更新等操作、或者克隆项目等操作后,很多情况下需要查看某个项目的操作 历史记录信息 

 

 git log:专门用于查看所有的 git 仓库操作历史数据的命令  git log --online:查看项目的历史纪录的简洁版本  git log --graph:查看历史记录中的分支、合并等操作  git log --reverse:逆向显示所有的日志  git log --author:查看指定用户的提交日志  git log --before={3.week.age} --after{2015-10-11}:指定时间段查询  git log --no-merges:隐藏合并提交 >>
git log $ git log 

commit 75b98b48898557dadfeb75048f25025fc846d040 

Author: muwenbin <1007821300@qq.com> Date:   Mon Sep 5 17:02:04 2016 +0800 

 

    取消缓存测试 

 

commit c25e6c14e45c44a94b169110ce342e9a6ef0202a Author: muwenbin <1007821300@qq.com> 

Date:   Mon Sep 5 16:58:07 2016 +0800 

 

    用户须知修改 

 

.. .. .. .. .. .. .. 

 

commit c25e6c14e45c44a94b169110ce342e9a6ef0202a 

Author: muwenbin <1007821300@qq.com> 

Date:   Mon Sep 5 16:58:07 2016 +0800 

 

    用户须知修改 

 

commit 1edb7a8ad089427e882c8f94c2d08d39eeef55ff 

Author: muwenbin <1007821300@qq.com> Date:   Mon Sep 5 16:56:13 2016 +0800 

 

    提交所有修改内容 

5标签/标记操作 

项目开发的过程中,会出现一些重要重大的改动,通常会称为里程碑版本等等,显示这 个版本的重要性,在使用 Git 操作的时候,同样也可以通过特殊的方式标记某个版本的特 殊性。 

 git tag <desc> 给项目添加应标识/标签  git tag 查看项目标签信息 

5-1 远程操作 

以上所有的操作都是在本地执行,但是如果要团队协作开发项目,或者将项目分享给其 他人的话,就需要将项目数据放在其他人都能访问的服务器上。操作步骤如下: github 注册账号-> 本地生成 SSH 密钥-> 仓库中添加密钥-> SSH 通讯 

 

5-2 注册账号 

浏览器打开 http://github.com 网站 默认打开首页时,页头部分提示了注册,如果没有提示,点击导航区域的 Sign Up 进 入注册页面 注册需要填写邮箱、密码、确认密码。 

 

 

15-3 创建仓库 

注册成功之后,进入登录页面/点击导航 Sign In 进入登录页面 

 

使用账号登录 github.com 网站,如下图所示:点击 New repositoy 创建项目仓库。 

 

以上信息提示,可以从当前的仓库中克隆项目,也可以将本地项目推送到 GitHub 仓库中。 

 

>> 推送项目 执行如下命令,将项目推送到远程仓库中  

>> 查看仓库 

 

5-4 远程操作命令 

>> 查看远程仓库  git remote  git remote –v  -v 参数可以查看到每个仓库别名的实际连接地址 

 

>> 提取远程仓库  git fetch 

 

备注:命令执行完成后,需要通过 git merge 合并远程分支到你自己的分支中  git pull:从远程仓库提取数据并尝试合并到当前分支 

 

>> 推送到远程仓库  git push [alias] [branch]  将 branch 分支推送称为 alias 远程仓库的 branch 分支 >> 删除远程仓库  git remote rm [repo_name] 

6 IDE 工具集成 GIT 

.、6-1 HBuilder 集成 GIT 开发 

 菜单-> 插件安装  EGIT->安装 

 

 

 共享项目  项目上右键点击  选择 Team->共享项目  在 Repository 中选择一个本地的 GIT 工作区  工作区可以先选择一个目录文件夹  点击 Create 按钮,会将选中的文件夹创建成 git 工作区  点击完成,就会将要共享的项目剪贴到工作区中  以后修改和提交的项目,都是 git 管理的项目,可以进行修改、提交、回退 等等各种操作。 

1-5.2 WebStrom 集成 GIT 开发 

1) 电脑上安装 git 客户端,下载地址:https://git-scm.com/downloads/ 2) 打开 webstrom,点击 File->Settings 3) 在设置窗口中,找到 Version Control->GitHub,填写配置 

 

备注:填写在 GitHub 上注册的账号和密码 

 

4) 配置 Git,找到 Version Control->Git 

 

备注:上面红色标注区域,就是前面安装的 git 的可执行文件 

 

5) 分享[share project on github]或者检出[checkout from..]项目 

7 案例:SSH 协同开发项目配置 

项目实际开发中,通常我们常见好一个项目,由第一个人将项目上传到创建好的 git 远 程仓库中。其他人更新到本地,并进行开发,开发的过程中会有【更新、提交、合并】等等 操作。如果只是使用账号创建的仓库,除了本人可以进行读取和提交的操作之外,其他登录 到 git 的账号只能读取你的项目而不能进行写入操作(如提交新文件等)。 

 

这样的情况下,就需要对项目开发人员进行授权操作,有权限的开发人员才能进行项目 的读取/写入操作。 

 

Git 出了上述的 HTTPS 项目操作之外,还有另一种 SSH 密钥匹配的操作,由每一个开 发人员在自己的个人 PC 上创建一个 SSH 密钥,然后将密钥提供给 GIT 远程仓库进行配置 添加,添加了 SSH 标识的客户端 PC 就可以对仓库进行读取/写入操作,由此完成多人协同 开发的目的。 

1-6.1 多人协同开发案例 

1) 项目发起人创建仓库。  创建公共仓库,名称为 1000phone_repo  选择 Public  选择生成 Readme.md 文件  提交创建仓库 

2) 收集客户端 SSH 密钥 a) 参与项目开发的客户端 PC,在个人 PC 上,生成 SSH 密钥 

 

b) 检测 Git 连接有效性 

 

上图中如果出现 are you sure you want to continue connecting?输入 yes 

 

提示 Hi ***! You’ve successfully authenticated..就表示接入成功。 

 

密钥文件位置:通常情况,密钥文件会生成在 C:\Users\[username]\.ssh\文件夹的 下面,username 表示电脑的名称。 

 

id_rsa.pub 内容如下(这个文件的内容,是需要提供给 github 进行配置的) : ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZw/UcMD6PKzyiUM+MVwKnuT66kUdaFmy3 WM2kQLnLGQ1bBXr/DpIDMt3k2VXAqaiDg5smKFNtb0LjSwqm0z1gVTYO3Upv/4sY O9Kmnr5H7yityMBih+8nOheRHmwFfUVOBpdOcZEOtf91gL2rmVn0BdO4tkh2lhYc lFIpm30UEVnvJUud04Qi468dNkb3hztAj1D5h60EhiHYUJLE8I/MhmRPRB1seMrA
5waBPkIf++qvoU/m6HLUBr6iLV95pb5VR0+DDaO4caqhMut4YOcmjKOY5ino8Vur Zp1k9oRsFrGdXq1KmxHVX86obk+fgjT4sedyL/cXP5qrKd04cVjt 1007821300@qq.com 

 

c) GitHub 添加密钥 

点击 New SSH Key  title 中输入你注册 github 用的邮箱,key 中输入前面的步骤中用 ssh 命令生成的 密钥文件内容即可。 

 

点击 Add SSH Key 之后,添加完成。如下图所示: 

 

 

此时,就可以向这个用户的所创建的仓库进行数据的增删改查了。 

1-6.2 工具配置之 HBuilder 

HBuilder 前面的内容中已经集成了 Git 插件,可以进行项目的操作。这部分讲解 Git 实 现团队协作。 主要有以下配置项: 1) 配置 SSH 进入选项配置 

 

配置 SSH 

 

备注:SSH2 主页,配置的是命令行生成的密钥文件目录【参考 1.2.13 章节】;私钥就是密钥文件名称, 将生成的 id_rsa、id_rsa.pub 以及 known_hosts 文件添加进来。确定即可。 

2) 项目操作 a) 后续的项目操作,选项如下图:使用 SSH 传输协议,URI 也是 SSH 地址(GIT 仓 库中提供的地址,直接复制得到) 

 

 

1-6.3 工具配置之 WebStrom 

webstrom 因为直接配置的 git 客户端,客户端已经对密钥进行了处理。ws 不需要进行二 次处理了。直接进行如下配置即可。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐