Git教程

Git教程

git 简介

Git是目前世界上最先进的分布式版本控制系统(没有之一)。

版本控制系统

版本控制系统就是在开发中用于记录不同阶段的开发文件的管理系统,可以在你需要的时候查找或者回到任何一个历史版本的文件.

git的特点

简单易用,安全性高

git的诞生

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

在2002年以前,世界各地的志愿者把源代码文件发给Linus,通过手工方式合并代码!累死他了都!

虽然当时也有其他的版本管理系统 SVN之类的 但是因为SVN是集中式的版本管理系统需要服务器存储版本信息,那时候网络不发达所以不合适,其他的是要收费的!

BitMover公司曾经给linux社区免费使用过版本管理系统,但是有人破解,所以被警告了.linus于是开始自己着手写一个版本管理系统.

一个月后 git诞生了,2008年github也应运而生.

集中式和分布式的区别

集中式:

所有用户产生的版本信息全部存在主服务器中,所有用户需要跟服务器进行通讯进行版本管理,一旦服务器出问题,啥都没了!

分布式:

所有用户的版本信息都在本地中有完整的信息备份,多用户开发版本也会在每个用户的电脑中存储所有的信息.一旦某台电脑出现问题可以从其他的用户处获取备份.

当然分布式也可以存在服务器,主要用于多人之间的数据交换,没服务器本地也可以一样进行版本管理.

git的安装

git是全平台都可以使用的版本管理系统,无论linux还是macos和window都可以使用,目前我们介绍window的使用.

下载地址

双击安装下一步即可.

版本库操作

因为git的window版本是命令行模式,所以需要一些常用的命令进行操作

命令:

cd 改变文件路径

mk dir 创建文件夹

pwd 查看当前所在路径

cat 查看文件内容

rm 删除指定文件

创建版本库

git init

​ 初始化版本库操作,使得git在指定的目录下创建版本库,并对其中个的内容进行监视.(尽量不要用中文目录)

版本库会存在三个文件区域:

​ 工作区:当前文件夹,可以对文件进行各种操作

​ 缓冲区:文件提交之前的区域,用于提交前对比工作区

​ 存储区:版本确定提交的区域(类似仓库入库货物并且登记)

添加文件

git add 文件名

​ 将指定的文件提交到缓冲区.

提交文件

git commit -m “版本信息”

​ 将缓冲区的文件提交到版本中记录

查看仓库状态

git status

​ 查看仓库状态,主要用于对比工作区和缓冲区文件的修改,提交状态

查看文件修改

git diff 文件名

​ 检测工作区中指定文件和缓冲区文件的区别,用于确认文件是否是要提交的版本

git diff HEAD --文件名

​ 检测工作区中指定文件和版本库中文件的区别

检测版本日志

git log

​ 获取所有仓库中已经提交的版本信息

git log --pretty=oneline4

​ 获取所有仓库中已经提交的版本信息,一行输出,信息简写

退回指定版本

git reset --hard HEAD^

​ 退回上一个版本

git reset --hard HEAD~5

​ 退回倒数第五个版本 ,数字表示退回的版本序号(倒数)

git reset --hard 序列号

​ 退回指定版本号的版本,只需写出前几位即可自动查找

查询所有的历史版本号

git reflog

如果之前回滚了版本,可以通过该命令获取所有的版本号历史记录

撤销操作

git restore-- 文件名

​ 将工作区中指定的文件使用版本库中的文件覆盖,撤销之前的操作

git reset HEAD 文件名

​ 将工作区中指定的文件使用缓冲区中的文件覆盖,撤销之前的操作,HEAD表示最新的版本

如果你的文件提交到版本库,可以通过版本回退操作,但是如果你提交到了服务器,那就跑路吧!

删除文件

git rm 文件名

​ 从版本库和工作区域删除文件! 只删除工作区的文件是没用的.别忘记commit

远程版本库的创建

配置本地账户信息:

$ git config --global user.name “John Doe”
$ git config --global user.email johndoe@example.com

本地库与远程库进行关联操作

git remote add 远程库的名字 git库的git地址

此处的远程库的名字是提供给本地的git使用的github远程库的名称,类似昵称,默认是origin

将本地库推送到远程库

git push -u 远程库的名字 master 

-u关联本地和远程的所有分支,没有-u仅仅推送当前的master分支

git push 远程库的名字 master

第一次使用-u推送后 以后就可以使用该简化命令

删除远程库

git remote rm 远程库的名字

查看远程库

git remote -v

远程关联本地

git clone 远程的git地址

分支管理

查看当前分支情况

git branch

创建分支

git checkout -b 分支名称

相当于执行2个命令

git branch 分支名称  新建分支
git checkout 分支名称  指定当前分支

删除分支

git branch -d 分支名称

合并分支

git merge 分支名称

switch

git switch -c 分支名称 创建分支
git switch 分支名称	切换分支

新的switch 就是分支专用的新命令 用于替换checkout而已,用哪个都行

解决冲突

当存在两个以上的分支 但是同一个文件内容有差异的情况下无法进行合并的,这个时候就需要找出差异的部分人工解决问题,再进行合并操作

冲突出现

创建分支1,修改文件-> 添加->提交 分支1结束

master分支,修改文件-> 添加->提交 master结束

合并操作

此时合并因为分支1和master对同一文件进行修改,版本管理无法合并产生冲突,如果仅一个分支修改,是可以合并的,被认为是增加内容而已!

冲突内容

Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们修改如下后保存:直接再工作区中可以看到冲突文件被标记.

修改解决完冲突内容(2选1),完成之后再次提交就可以合并了.

查看分支合并情况

git log --graph --pretty=oneline --abbrev-commit

分支管理策略

分支管理策略是指如何对分支进行管理能够是的开发程序,开发人员,版本发布互不干扰协同管理的一种方案,通常遵循以下原则:

  1. master分支只用于软件成品的分发布,不用于直接开发
  2. 新建dev分支用于开发内容,多人员提交所使用的分支
  3. 为每个开发人员在dev上单独设立分支,负责不同部分的内容
  4. 开发完成就提交到dev分支用于测试
  5. 测试确定软件没有问题可以使用,提交到master分支

紧急bug修复策略

紧急bug修复就是指在已经发布的软件版本中出现bug需要放下目前工作区的内容进行master分支操作.

这个时候使用git stash的时候到了:

  1. 先用git status 检查工作区是否有没被git管理的文件
  2. 确定没有之后使用git stash命令存储工作区域
  3. 进入master分支 ,创建bug修复分支,例如bug 110,
  4. 在bug110分支上进行修复,修复完成进行合并并删除bug110分支
  5. 切换回之前的开发分支,找出暂存的工作区内容 git stash list查看
  6. 使用git stash pop 将暂存工作区内容返回当前工作区,此方式回删除stash list
  7. 再次查看工作区git stash list 无内容
  8. 因为master的分支是开发分支提交而来,所以bug也存在开发分支,如果需要将修复的分支也提交到开发分支, git cherry-pick bug分支名称

多人写作(需要服务器)

查看远程库名称

git remote

查看远程库详细信息

git remote -v

推送分支

git push 远程库名称  分支名称

推送规则

1.  master分支,必须时刻与远程同步
2.  开发分支,团队协作开发,需要远程同步
3.  bug分支.基本不用

抓取分支

git pull  从远程库中将冲突分支下载到本地用于合并之后再推送上去
  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
### Git 入门教程与使用指南 Git 是一个分布式版本控制系统,广泛用于软件开发中,帮助开发者管理代码的变更历史、协作开发以及维护多个版本的代码库。以下是 Git 的基本使用和操作指南,适合初学者快速上手。 #### 1. Git 的安装与配置 在使用 Git 之前,需要先在本地环境中安装 Git。安装完成后,建议配置全局用户名和邮箱,以便在提交代码时记录作者信息。 ```bash # 配置全局用户名 git config --global user.name "YourName" # 配置全局邮箱 git config --global user.email "your.email@example.com" ``` 这些信息会记录在每次提交中,确保团队协作时可以追溯代码的来源[^1]。 #### 2. 初始化本地仓库 创建一个新的 Git 仓库可以通过 `git init` 命令完成。该命令会在当前目录下生成一个 `.git` 子目录,用于存储版本控制数据。 ```bash # 初始化一个新的 Git 仓库 git init ``` #### 3. 克隆远程仓库 如果已有远程仓库(如 GitHubGitLab 或公司内部 Git 服务器),可以使用 `git clone` 命令将远程仓库复制到本地。 ```bash # 克隆远程仓库到本地 git clone https://git.code.tencent.com/git-class-001/git-test.git ``` 克隆完成后,会在本地生成一个与远程仓库完全相同的副本,开发者可以在本地进行修改和提交[^2]。 #### 4. 查看仓库状态与提交历史 在进行提交或修改之前,建议使用 `git status` 查看当前分支的状态,了解哪些文件已被修改但尚未提交。 ```bash # 查看当前分支状态 git status ``` 如果需要查看提交历史,可以使用 `git log` 命令: ```bash # 查看提交历史 git log ``` 在查看提交历史时,可以使用键盘上的方向键滚动,按 `Q` 键退出查看模式。 #### 5. 添加与提交更改 在修改文件后,需要将更改添加到暂存区,然后进行提交。 ```bash # 添加所有修改到暂存区 git add . # 提交更改并添加提交信息 git commit -m "描述本次提交的内容" ``` 提交信息应简明扼要,说明本次提交的目的或修改的内容,便于后续查看和理解。 #### 6. 推送更改到远程仓库 提交完成后,可以将本地的更改推送到远程仓库,以便其他开发者同步更新。 ```bash # 推送本地提交到远程仓库 git push origin main ``` 其中 `origin` 是远程仓库的默认名称,`main` 是默认的主分支名称。如果使用其他分支,需替换为对应的分支名。 #### 7. 分支管理 Git 支持创建多个分支,便于并行开发和版本管理。常用的分支操作包括创建、切换、合并和删除分支。 ```bash # 创建新分支 git branch feature-branch # 切换到指定分支 git checkout feature-branch # 创建并切换到新分支(简化命令) git checkout -b feature-branch # 查看所有分支 git branch # 合并指定分支到当前分支 git merge feature-branch # 删除分支 git branch -d feature-branch ``` 分支管理是 Git 的核心功能之一,合理使用分支可以有效组织开发流程,避免主分支的不稳定状态[^3]。 #### 8. 使用 Git Rebase 整理提交历史 除了 `git merge`,还可以使用 `git rebase` 来整合分支的提交历史。`git rebase` 可以将一个分支的更改“移植”到另一个分支上,使提交历史更加线性、清晰。 ```bash # 切换到要 rebase 的分支 git checkout feature-branch # 将 feature-branch 的提交基于 main 分支进行 rebase git rebase main ``` 在 rebase 过程中可能会遇到冲突,需要手动解决冲突后继续 rebase 操作。 #### 9. 解决冲突 当多人同时修改了同一个文件的相同部分时,Git 会提示冲突。冲突文件中会标记冲突区域,开发者需要手动编辑文件,选择保留的代码。 ```bash # 冲突解决后标记为已解决 git add <filename> # 继续 rebase 或 merge 操作 git rebase --continue ``` #### 10. 常用命令总结 | 操作 | 命令示例 | |--------------------------|---------------------------------------| | 初始化仓库 | `git init` | | 克隆远程仓库 | `git clone <仓库地址>` | | 查看状态 | `git status` | | 查看提交历史 | `git log` | | 添加修改到暂存区 | `git add .` | | 提交更改 | `git commit -m "提交信息"` | | 推送更改 | `git push origin <分支名>` | | 创建分支 | `git branch <分支名>` | | 切换分支 | `git checkout <分支名>` | | 创建并切换分支 | `git checkout -b <分支名>` | | 合并分支 | `git merge <分支名>` | | 删除分支 | `git branch -d <分支名>` | | Rebase 操作 | `git rebase <目标分支>` | | 解决冲突后继续 Rebase | `git rebase --continue` | --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值