当前位置:   article > 正文

Git项目管理工具教程_git代码管理工具

git代码管理工具

Git与Github

Git是一个分布式版本控制系统,就是一个软件,用于记录一个或若干个文件内容变化,以便于将来查阅特定版本修订情况的软件。

Github(GitHub: Let’s build from here · GitHubhttps://github.com/https://github.com/

是一个为用户提供 Git 服务的网站,简单说就是一个可以放代码的地方 (不过可以放的当然不仅是代码)。Github 除了提供管理 Git 的 web 界面外,还提供了订阅、关注、讨论组、在线编辑器等丰富的功能。Github,被称之为全球最大的基友网站。

 Git软件
Github放代码的网站

Git介绍

Git是目前世界上最先进的分布式版本控制系统

Git是分布式的,Git不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用Git并且有个中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的PC是一样的。我们可以把它当做一个开发者的PC就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不过“交换”修改不方便而已。git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是LinusTorvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众多的参与者绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。到了2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds) 基于使用BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:

速度
简单的设计
对非线性开发模式的强力支持(允许成千上万个并行开发的分支)

完全分布式
有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

Git的使用

工作流程

 

 指令

git status

git commit-m  提交描述

git status

git add hello.php

git add test.php

git status

本地仓库操作

什么是仓库呢?仓库又名版本库,英文名 repository,我们可以简单理解成是一个目录用于存放代码的,这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除等操作 Git 都能跟踪到。

①在安装好后首次使用需要线进行全局配置

桌面控股摆出右键,点击“Git Bash Here” 以打开Git命令行窗口

git config --global user.name"xudefeng"
git config --global user.email"2903607428@qq.com"

②创建仓库

当我们需要让 Git 去管理某个新项目/已存在项目的时候,就需要创建仓库了。注意,创建仓库时使用的目录不一定要求是空目录,选择一个非空目录也是可以的,但是不建议在现有项目上来学习 Git,否则造成的一切后果概不负责!

注意:为了避免在学习或使用过程中出现各种奇葩问题,请不要使用包含中文的目录名(父目录亦是如此)。

指令:

mkdir pro_git        创建pro_git文件夹

cd pro_git        进入pro_git文件夹

③Git仓库初始化(让Git知道,它需要来管理这个目录)

指令:

添加到缓存区: git add 文件名

提交至版本库: git connit -m"注释内容"

查看当前状态:git status

仓库初始化:    git init

表现:执行之后会在项目目录下创建“.git”的隐藏目录,这个目录是Git创建的,不能删除,也不能随意更改其中的内容。

说明:git add 指令,可以添加一个文件,也可以同时添加多个文件

语法1: git add 文件名

语法2: git add 文件名1 文件名2 ...

语法3: git add.            [添加当前目录到缓存区中]

Git的版本回退操作

版本回退

分为两步骤:

①  查看版本,确定需要回到的时刻点

指令:

git log

git log --pretty=oneline

②回退操作

指令:

git reset--hard  提交编号

案例:回到创建好第一个文件 readme.txt的时候

git  reset--hard 黄色的版本号

 注意:回到过去之后,要想再回到之前最新的版本的时候,则需要使用指令去查看历史操作,

已得到最新的 commit id 

指令:

git reflog

小结:

1.要想回到过去,必须先得到 commit id,然后通过 git reset -hard 进行回退

2.要想回到未来,需要使用 git reflog 进行历史操作查看,得到最新的 commit id

3.在写回退指令的时候 commit id 可以不用写全,git 自动识别,但是也不能写太少,至少需要写前  4位字符

线上远程仓库创建

 两种常规使用方式

基于https协议

a.创建一个空目录,名称为shop

 b.使用clone 指令克隆线上仓库到本地

语法: git clone 线上仓库地址

 c.再仓库上做对应的操作(提交暂存区、提交本地仓库、提交线上仓库、拉去线上仓库)

提交到线上仓库的指令:  git push

在首次往线上仓库提交内容的时候出现  403 的致命错误,原因是  不是任何人都可以往线上仓库提交内容,必须需鉴权

需要修改“.git/config”文件内容

例如:

在设置好用户名密码之后再次尝试 push 指令 

 如果看到类似上述效果(没有fatal错误)则

这样表示提交成功了

【验证】此时可以观察浏览器,刷新线上仓库的地址

拉取线上仓库:git pull

提醒:

在每天工作的第一件事就是先  git pull  拉取线上最新的版本 ;每天下班前要做的是 git push

将本地代码提交到线上仓库。

基于ssh协议

该方式与前面 https 方式相比,只是影响 github,对于用户的身份鉴权方式,对于 git 的具体操作(如提交本地、添加注释、提交远程等操作)没有任何影响。
 

生成公私钥对指令(需先自行安装 OpenSSH):ssh-keygen-trsa-C"注册邮箱”

步骤:

1⃣️生成客户端公私钥文件

2⃣️将公钥上传到Github

实际操作:

1⃣️打开提示

 

2⃣️创建公私钥文件

 

3⃣️ 找到公钥地址,用代码编辑器或者文本文档打开后缀为.pub的文件

复制全部

在这个地方添加 

 

4⃣️上传公钥文件内容(id_rsa.pub) 

保存即可

5⃣️执行后续git操作,与之前基于https协议操作一样

a、clone 线上仓库到本地 (git clone)

b、修改文件后添加缓存区

分支管理

多人协同管理使用

在版本回退的章节里,每次提交后都会有记录,Git 把它们串成时间线,形成类似于时
间轴的东西,这个时间轴就是一个分支,我们称之为 master 分支

在开发的时候往往是团队协作,多人进行开发,因此光有一个分支是无法满足多人同时开发的需求的,并且在分支上工作并不影响其他分支的正常使用,会更加安全,Git 鼓励开发者使用分支去完成一些开发任务。
 

分支相关指令:

查看分支: git branch

切换分支: git branch 分支名

创建分支: git checkout 分支名

删除分支: git branch-d 分支名

合并分支: git merge 被合并的分支名

对于新分支,可以使用“git checkout-b 分支名”指令来切换分支,-b 选项表示创建并切换,相当于是“删除分支: git branch-d 分支名  +  合并分支: git merge 被合并的分支名 ”两个操作指令。

查看分支:

注意:当前分支前面有个标记“ * ”  小梅花的标志

创建分支:

注意:小梅花标志和文字绿色的master是当前的分支

 切换分支:

合并分支:

将dev分支的内容合并到主分支master中,合并后dev分支还在

删除分支:

 

git btanch -d dev 删除dev分支后  git branch 查看分支,这个时候就只有mester 主分支一个了

注意:在删除分支的时候,一定要先退出删除的分支 ,然后才能删除。

合并所有分支之后,需要将master分支提交线上远程仓库中。

冲突的产生与解决

案例:模拟产生冲突

1⃣️同事在下班之后修改了线上仓库代码

此时,我的本地仓库内容和线上的不一致。

2⃣️第二天上班的时候我没有做git pull拉取线上的文件,而是直接修改了本地的对应文件的内容。

3⃣️第二天下班需要将代码修改的提交到线上仓库(git push)

提交失败  提示我们要在再次push 之前先git pull操作

【解决冲突】

 4⃣️先 git pull

此时git 已经将线上与本地仓库的冲突合并到对应的文件中

5⃣️打开冲突文件,解决冲突 

解决方法:需要和同事(谁提交的  小A)进行商量,看代码如何保留,将改好的文件再次提交即可。

 6⃣️重新提交 git push

Git实用技能

图形管理工具

1⃣️Github for Desktop

Github,出品的软件,功能完善,使用方便。对于经常使用 GitHub 的开发人员来说是非常便捷的工具。界面干净,用起来非常顺手,顶部的分支时间线非常绚丽。
 

2⃣️Source tree

 老牌的 Git GUI 管理工具了,也号称是最好用的 Git GUI 工具。功能丰富,基本操作和高级操作都非常流畅,适合初学者上手。

3⃣️TortoiseGit

 

对于熟悉SVN的开发人员来说,这个小乌龟图标应该是非常友善了。TortoiseGit简称 tgit,中文名海龟Git。他与其前辈TortoiseSVN 都是非常优秀的开源版本控制客户端软件。 

忽略文件

场景: 在项目目录下有很多万年不变的文件目录,例如 css、js、images 等,或者还有一些目录即便有改动,我们也不想让其提交到远程仓库的文档,此时我们可以使用“忽略文件”机制来实现需求。

忽略文件需要新建一个名为  .gitignorg  的文件,该文件用于声明忽略文件或不忽略文件的规则,规则对当前目录及其子目录生效

 注意: 该文件因为没有文件名,没办法直接在 windows 目录下直接创建,可以通过命令行 Git Bash 来 touch 创建。

常见规则写法有如下几种:

1⃣️   /mtk/                    过滤整个文件夹

2⃣️   *.zip                     过滤所有.zip文件

3⃣️   /mtk/do.c             过滤某个具体文件

4⃣️   index.php             不过滤具体某个文件

在文件中以“#”开头的代表注释

案例:

1.现在本地仓库中新建一个js目录以及目录中的js文件

 

2.依次提交本地与线上

3. 新增.gitignore 文件

4.编写文件中的规则(根据需要编写) 

5.再次提交本地与线上

 观察线上仓库js目录中是否有新增index.js文件;

说明:忽略文件的操作已经生效了

 


 Git工作流程图

命令如下:
1.clone (克隆) :从远程仓库中克隆代码到本地仓库
2.checkout (检出) :从本地仓库中检出一个仓库分支然后进行修订3.add (添加):在提交前先将代码提交到暂存区
4.commit (提交): 提交到本地仓库。本地库中保存修改的各个历史版本
5.fetch (抓取): 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

6.pull(拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge

7.push (推送) :修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库 

Git安装与常用命令

本教程里的git命令例子都是在Git Bash中演示的,会用到一些基本的linux命令,在此为大家提前列举:

  • Is/II    查看当前目录
  • cat     查看文件内容
  • touch 创建文件
  • vi       vi编辑器(使用vi编辑器是为了方便展示效果,学员可以记事本、editPlus、notPad++等其它编辑器)

Git环境配置

下载与安装

下载地址:Githttps://git-scm.com/

备注:
Git GUI: Git提供的图形界面工具
Git Bash: Git提供的命令行工具
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。

基本配置

1.打开Git Bash

2.设置用户信息

git config --global user.name "xudefeng"
git config --global user.email"2903607428@qq.com"

查看配置信息

git config --global user.name

git config --global user.email

为常用指令配置别名

有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。

1.打开用户目录,创建 .bashrc  文件

Git是目前世界上最先进的分布式版本控制系统

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/550510
推荐阅读
相关标签
  

闽ICP备14008679号