Git一步到位

1. 什么版本控制器?

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
1.实现跨区域多人协同开发. 
2.追踪和记载一个或者多个文件的历史记录
3.组织和保护你的源代码和文档
4.统计工作量
5.并行开发、提高开发效率.
6.跟踪记录整个软件的开发过程
7.减轻开发人员的负担,节省时间,同时降低人为错误

简单说就是用于[管理多人协同开发项目]的技术软件。

2. 为什么需要版本控制器?

场景一:备份 小明负责的模块就要完成了,就在即将发布之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月 来的努力付之东流 。

场景二:代码还原 这个项目中需要一个很复杂的功能,老王摸索了一个星期终于有眉目了,可是这被改得面目全非的 代码已经回不到从前了。什么地方能买到哆啦A梦的时光机啊?

场景三:追溯问题代码的编写人和编写时间! 老王是另一位项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序员的工资!就拿这 次来说吧,有个Bug调试了30多个小时才知道是因为相关属性没有在应用初始化时赋值!可是二胖、王东、刘 流和正经牛都不承认是自己干的!

3.GIT

Git是分布式的,Git不需要有中心服务器,我们每台电脑拥有的东西都是一样的。我们使用Git并且有个中心服务器,仅仅是为了方便交换大家的修改,但是这个服务器的地位和我们每个人的PC是一样的。我们可以 把它当做一个开发者的pc就可以就是为了大家代码容易交流不关机用的。没有它大家一样可以工作,只不 过“交换”修改不方便而已。

176916c401ff42a0b59c3273954e6226.png

3.1.git的工作流程

 95b93dc3aa384a62b81ed38528b56c9e.png

4. 安装git软件

4.1 下载与安装

Git - Downloadshttps://git-scm.com/download 3665f836617942509ae8a0d526f8a8d4.png

80d9940681264c728dd9385d7f15009b.png

下载后只需要下一步。。。。。。。

双击下载的安装文件来安装Git。安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。

4bfbff2112b44c5e8b1b42e80c5fc428.png

 安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"    

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

查看配置信息

git config --global user.name

git config --global user.email

4.2 初始化git本地仓库

要使用Git对我们的代码进行版本控制,首先需要获得本地仓库;本地仓库你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

1)在电脑的任意位置创建一个空目录(例如test)作为我们的本地Git仓库

2)进入这个目录中,点击右键打开Git bash窗口

3)执行命令git init

4)如果创建成功后可在文件夹下看到隐藏的.git目录。

20a4e60a651c4f12ac36703f907a2bda.png

 瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

4.3.基础操作指令

Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。

 仓库中记录的是文件的修改记录。
工作区: 存储你的代码的。
暂存区: 它只是在内存中的一个空间。

ac3ffccd023e45a6bc8334fd69506ef0.png

本章节主要讲解如何使用命令来控制这些状态之间的转换:

  1. git add (工作区 --> 暂存区)

  2. git commit (暂存区 --> 本地仓库)

7833bf6408b245fe8566fbe48ae68573.png

这里我遇到了一个问题:不会进入vim编译器:

(6条消息) 秒懂Git之配置(配置git默认编辑器为vscode或者notepad++)_ShuSheng007的博客-CSDN博客_git默认编辑器选什么好https://blog.csdn.net/ShuSheng0007/article/details/115449596        git config --global core.editor vim

4.3.1.查看修改的状态(status)

作用:查看的修改的状态(暂存区、工作区)

命令形式:git status

4.3.2.添加工作区到暂存区(add)

作用:添加工作区一个或多个文件的修改到暂存区

命令形式:git add 单个文件名||通配符

将所有修改加入暂存区:git add .

4.3.3.提交暂存区到本地仓库(commit)

作用:提交暂存区内容到本地仓库的当前分支

命令形式:git commit -m '注释内容'

=10分钟。

4.3.4.查看提交日志(log)

作用:查看提交记录

命令形式:git log [option]

options

--all 显示所有分支

--pretty=oneline 将提交信息显示为一行

--abbrev-commit 使得输出的commitId更简短

注意: 
有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。
1. 打开用户目录,创建 .bashrc 文件
部分windows系统不允许用户创建点号开头的文件,可以打开gitBash,执行 touch ~/.bashrc

3a7366a4bb7a4b07bc96c6cb19b1384d.png

 在 .bashrc 文件中输入如下内容:
#用于输出git提交日志 
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

4.3.5.添加文件至忽略列表

一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。

b269d50f31fe407ebe2cf6b9b8eafa05.png

4.3.6.版本回退


作用:版本切换

命令形式:git reset --hard commitId

commID 可以使用 git log 指令查看

如何查看已经删除的记录

git reflog

这个指令可以看到已经删除的提交记录

4.4.分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线.

4.4.1.查看本地分支

命令:git branch

4.4.2.创建本地分支

命令:git branch 分支名

4.4.3.切换分支(checkout)

命令:git checkout 分支名

我们还可以直接切换到一个不存在的分支(创建并切换)

命令:git checkout -b 分支名

4.4.4.合并分支(merge)

一个分支上的提交可以合并到另一个分支

命令:git merge 分支名称

4.4.5.删除分支

不能删除当前分支,只能删除其他分支

git branch -d b1 删除分支时,需要做各种检查。 查看当前分支有没有没合并的内容

git branch -D b1 不做任何检查,强制删除.

4.4.6.解决冲突.

当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:

  1. 处理文件中冲突的地方.

  2. 将解决完冲突的文件加入暂存区(add)

  3. 提交到仓库(commit)

冲突部分的内容处理如下所示:

373fbfe91dd74340a5f36257ec24aa60.png

 上面这些操作都是对本地仓库来说。

5.Git远程仓库

5.1. 常用的托管服务[远程仓库]

前面我们已经知道了Git中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库 呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。

gitHub( 地址:https://github.com/ )是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名gitHub 

码云(地址: https://gitee.com/ )是国内的一个代码托管平台,由于服务器在国内,所以相比于 GitHub,码云速度会更快 

GitLab (地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用Git作 为代码管理工具,并在此基础上搭建起来的web服务,一般用于在企业、学校等内部网络搭建git私服。 安全性高 银行项目 16G以上

5.2. 注册码云

要想使用码云的相关服务,需要注册账号(地址: 注册 - Gitee.com

7a2cc2ea776c405791b879c96595aeea.png

 5.3. 创建远程仓库

9a062874ce984c91ba138c22425be955.png

 仓库创建完成后可以看到仓库地址,如下图所示:

1f29a3ae0ca14bafa708d996e54ec01c.png如果有本地仓库。

本地仓库关联远程仓库地址:
git remote add 名称(默认为origin 可以随便起)  远程仓库的地址。

把本地仓库的代码推送到远程仓库
git push 名称  本地分支名:远程分支名    如果本地分支名和远程分支名相同可以只写一个。

git分布式版本控制器。
  1. 初始化本地仓库: git init
  2. 查看git仓库文件状态: git status
  3. 工作区中的文件添加到暂存区。 git add .
  4. 暂存区到本地仓库 git commit -m '描述'
  5. 查看提交日志 git log 
  6. 查看所有日志 git reflog
  7. 版本回退: git reset --hard commitId
  8. 分支:
      git branch 查看分支
      git branch 分支名   创建分支
      git checkout 分支名 切换分支
      git checkout -b 分支名: 创建并切换分支。
      git branch -d 分支名: 保证分支中的内容并合并了。
     
   9. 远程仓库: 只是为了开发人员之间方便交互版本信息,类似于本地仓库。
   
   10. git remote add 名称 git地址
   11. git push 名称 本地分支:远程分支;

 6.添加免密登录

(1)第一次登录需要设置账号和密码。

(2)因为你的仓库属于私有的,别人也无法访问自己远程仓库的代码。

我们可以通过公钥来允许其他成员以及自己来访问该仓库。

使用: ssh-keygen -t rsa 来帮你生成公钥。四次回车即可生成公钥

(1) 随便找个地方 右键

 (2)输入指定命令  回车即可   会弹出 密钥地址

 

 一个公钥只能被一个远程仓库添加,如果你还想用该密钥被别的远程仓库添加,必须让这个仓库删除,要么重新生成密钥(把之前的删除,再执行一遍即可)

如何把别人的公钥添加进来(别人就可以访问自己的仓库了):

(1)点击设置

 (2)ssh公钥

 上面添加的公钥只能在一个仓库添加。例如:小李要访问我的gitee仓库,那么小李的公钥应该给我,我把它添加到ssh公钥, 其他人也想让小李访问他的gitee仓库,那么我必须得删除ssh公钥。

7.场景分析

基于我们后面的实战模式,我们做一个综合练习

当前的开发环境如下,我们每个人都对这个项目已经开发一段时间,接下来我们要切换成团队开发模式。

也就是我们由一个团队来完成这个项目实战的内容。团队有组长和若干组员组成(组长就是开发中的项目经理)。

所有操作都在idea中完成。

练习场景如下:

1、由组长把项目架构搭建起来,基于本项目创建本地仓库;创建远程仓库,推送项目到远程仓库。

 2、每一位组员从远程仓库克隆项目到本地中,这样每位同学在自己电脑上就有了一个工作副本,可以正式的开始开发了。我们模拟两个组员(组员A、组员B),克隆两个工作区。

 3、组员A修改工作区,提交到本地仓库,再推送到远程仓库。组员B可以直接从远程仓库获取最新的代码。

4、组员A和组员B修改了同一个文件的同一行,提交到本地没有问题,但是推送到远程仓库时,后一个推送操作就会失败。

解决方法:需要先获取远程仓库的代码到本地仓库,编辑冲突,提交并推送代码。

附:几条铁令

---从远程仓库克隆项目----作用:克隆下来的项目会自动有本地仓库而且会自动和远程仓库关联。

git clone gitee的地址。

拉取远程仓库最新的代码: git pull origin master     如果此时自己电脑还是之前的版本,执行代码后,会和远程仓库中一致。

比如我是项目经理,我在自己电脑上布置框架,先执行git init(先把项目交给Git管理),之后 给git add . ---->git commit -m ' '---->git remote add 名称(默认为origin 可以随便起)  远程仓库的地址----->git push 名称  本地分支名:远程分支名.   

我的项目组员要先从远程仓库去克隆下来的项目,会自动有本地仓库而且会自动和远程仓库关联,然后完成自己的任务,完成之后,先添加到暂存区(git add .)---->再提交到本地仓库(git commit -m ''),之后拉取代码(git pull 名称  本地分支名:远程分支名),最后提交(git push 名称  本地分支名:远程分支名)代码。

上面所有的操作都是基于命令模式进行的,在实际开发中我们使用idea开发。

要用idea关联git。从而完成图形化操作。

8.idea关联git

(1)setting----为了让git和idea关联在一起

 (2)通过idea创建本地仓库----git init

 (3)添加到暂存区---git add .

(4) 提交到本地仓库-- git commit -m '描述'

 

(5) 提交到远程仓库----git push origin master

你克隆下来后使用idea打开。

你就可以尽情改。---提交到远程。

开发步骤:

        主分支上(master)--(切换到)-->子分支(按照功能)--(测试成功之后)-->add .----->commit---->切换到主分支(chackout)----->合并分支内容(merge)----->拉取远程仓库的内容(pull)----->推送(push)

如图所示 :

(1)新建分支

 (2)定义分支名

 (3)在分支中编写需要的功能,测试成功后,先add在commit

 (4)切换到主分支

 (5)在主分支中合并分支

 (6)删除分支

 (7)把新代码重新上传到远程仓库

9.断开与原来远程仓库的连接,连接新仓库并上传

1.连接远程仓库
git remote add origin 仓库地址

2.查看远程连接
git remote -v

3.git取消与远程仓库的连接
git remote remove origin

4.初始化仓库

git init

5.连接新仓库

git remote add origin https://github.com/XXX.git

6.检查状态

git status

7.检查分支

git branch

8.创建分支

git checkout br

9.提交到 本地

git add .

10.提交说明

git commit -m “说明"

11.推送到远程分支

git push -u br

12.切换到主分支

git checkout main

13.本地合并

git merge br

14.推送到远程

git  push
 

Git之回退已经提交到远程仓库的代码(已经push的代码)

(1条消息) Git之回退已经提交到远程仓库的代码(已经push的代码)_git回退远程提交_码莎拉蒂 .的博客-CSDN博客 

1.问题:

git把当前的修改已经push到远程仓库,现在许哟啊回退这个远程提交

2.解决办法

1)用git log命令找到commit Id

 e39bd961b50b21e8e3b84e5df861be6d5ccc5310是我最后一次提交,

然后我们需要回退到40be0b3f0c9bc1cd463476aaeb3d598590de1c31

2)先回退本地的这次提交

git reset --hard [commit id]

 

3)将本地修改强制push到远程仓库

git push --force

此时远程仓库就没有了该条提交记录 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值