Git基础
Git基础
提示
推荐学习:廖雪峰的Git教程
1.Git介绍
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
开发中解决的问题
- 代码备份
- 版本控制
- 协同工作
- 责任追溯
Git VS SVN
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候首先要从中央服务器下载最新的版本到本地电脑,开发完成之后再将代码提交到中央服务器。其具备如下缺点
服务器单点故障将会导致所有人员无法工作
服务器硬盘损坏则可能失去该项目的所有历史记录(毁灭性灾害)
Git是在2005年,Linux系统的创建者Linus Torvalds,为了帮助全球的开发者维护Linux系统内核的开发,开发的开源分布式版本控制工具,其主要分为两种类型的仓库:本地仓库和远程仓库。
- 由于每一个客户端都保存了完整的历史记录,当服务器出现故障可通过客户端的记录进行恢复
2.Git下载、安装、配置
Git下载安装
Git官网下载
安装:一路傻瓜式安装(注意指定安装路径),安装完成可在任意目录点击右键查看是否存在Git相关的菜单功能(Git GUI、Git Bash),运行Git命令客户端,使用git --version
查看安装的git版本
TortoiseGit下载与安装
TortoiseGit官网下载:安装TortoiseGit和对应版本的中文包
安装完成,随后在任意目录点击右键选择TortoiseGit->Settings->General(配置Language为中文,点击应用)
3.Git操作
本地仓库:Git的工作流程
常用Git命令行
命令 | 作用 |
---|---|
git init | 初始化,创建 git 仓库 |
git status | 查看 git 状态 (文件是否进行了添加、提交操作) |
git add 文件名 | 添加:将指定文件添加到暂存区 |
git commit -m '提交信息' | 提交:将暂存区文件提交到历史仓库 |
git log | 查看日志( git 提交的历史日志) |
常用Git操作方式
- 在Git Bash窗口借助Git指令完成Git相关操作
# 1.创建一个目录作为初始化仓库
git init
# 2.在该目录下创建一个新文件hello.txt,并将其添加到暂存区
git add hello.txt
# 3.查看仓库文件状态(新增、修改以及是否添加到暂存区)
git status
# 4.提交暂存区文件到历史仓库,随后再次查看仓库文件状态
git commit -m 'create hello.txt'
git status
# 5.重新修改文件后查看仓库文件状态并提交
git status
git add hello.txt
git commit -m 'modify hello.txt'
# 6.查看提交日志
git log
# 7.查看所有分支的提交记录,可根据索引码切换分支版本内容
git reflog
git reset --hard 版本唯一索引值
- 也可借助图形化工具进行操作(通过右键菜单和TortoiseGit进行操作)
4.Git版本管理
历史版本切换
针对一些提交后内容出现问题的项目,可通过切换历史版本回溯指定版本的项目内容,参考步骤说明如下
查看项目的log日志
# 查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)
git reflog
# 切换指定版本内容
git reset --hard 版本唯一索引值
分支管理
🔖分支管理概念
分支
- 由每次提交的代码,串成的一条时间线(主分支-master)
- 使用分支则可将工作从开发主线上分离开来,以免影响开发主线(例如一些周期较长或者尝试性的模块开发)
分支工作流程
- Master: 指向提交的代码版本
- Header: 指向当前所使用的的分支
🔖分支管理操作
创建和切换
创建命令:git branch 分支名 切换命令:git checkout 分支名
新分支添加文件
查看文件命令:ls
合并分支
合并命令:git merge 分支名
删除分支
删除命令:git branch -d 分支名
查看分支列表
查看命令:git branch
5.远程仓库
远程仓库工作流程
远程仓库平台
🔖参考案例:先有本地项目(远程为空)
# 1.先创建本地仓库
git init
# 2.创建或者修改文件,add->暂存区,commit->本地仓库
git add hello.txt
git commit -m 'edit hello.txt'
# 3.创建远程仓库
在指定代码仓库平台创建同名仓库,随后在本地生成SSH公钥并在对应仓库进行配置
# git账号查看、配置
+ git config user.name(查看git账户)
+ git config user.email(查看git邮箱)
+ git config --global user.name “账户名”(设置全局账户名)
+ git config --global user.email “邮箱”(设置全局邮箱)
+ cd ~/.ssh(查看是否生成过SSH公钥)
# 生成SSH公钥
+ ssh-keygen –t rsa –C "邮箱" (默认回车即可,如果需要额外指定配置则根据提示进行设置)
+ 查看SSH公钥,并在代码托管平台中进行配置
+ 配置完成通过git bash测试公钥:ssh -T git@gitee.com(gitee托管平台)
# 4.远程仓库推送
git remote add 远程名称 远程仓库URL
git push -u 仓库名称 分支名
# 参考
+ git remote add origin 远程仓库URL
+ git push -u origin master
🔖参考案例:先有远程仓库(本地项目为空)
# 1.克隆远程仓库到本地
git clone 仓库地址
# 2.创建/修改文件,add->暂存区,commit->本地仓库,push->推送
git add hello.txt
git commit -m 'edit hello.txt'
git push 远程名称
# 3.项目拉取更新
git pull 远程仓库名 分支名
常见问题
1>代码冲突
代码冲突的产生原因:
不同的协作者操作同一个文件,A在修改文件后,push到远程仓库,B应该先pull将最新的代码更新到本地仓库后再执行修改代码、commit、push等操作,结果B没有先pull将最新的代码更新到本地仓库,而是直接将修改的内容push到远程仓库,则有可能会导致代码冲突
代码冲突的解决方案:
查看冲突的文件内容,<<<<<<<和>>>>>>>
中间的内容,就是冲突部分
1>修改冲突行,保存,即可解决冲突。
2>重新add冲突文件并commit到本地仓库,重新push到远程
2>git clone报错:fatal: protocol error: bad pack header
在git bash中输入以下命令: git config --global pack.windowMemory “100m” git config --global pack.SizeLimit “100m” git config --global pack.threads 1
6.IDEA集成Git
File -> Settings -> Version Control -> Git -> 指定git.exe存放目录(点击Test测试)
可借助Git菜单栏完成相关指令的操作: