Git及GitHub使用教程
Git部分
Git概述
Git是一个免费的开源的分布式版本控制系统。
- 版本控制系统
版本控制系统是一种记录文件历史修改记录,以便将来查阅特定版本修订情况的系统。
- 集中式版本控制工具 VS 分布式版本控制工具
集中式版本控制工具:
- 特点:
- 所有文件版本和历史记录存储在中央服务器上。
- 开发者通过客户端从中央服务器检出最新版本的代码,并将更改推送回服务器。
- 优势:
- 中央化的存储使得管理项目的权限控制更容易。
- 管理员可以更轻松地控制项目的状态和权限。
- 开发者只需了解中央服务器的概念,学习曲线相对较低。
- 缺点:
- 协作过程中对中央服务器的依赖性较高,服务器故障可能导致开发中断。
- 因为所有操作都涉及到与中央服务器的交互,对网络连接的要求较高。
分布式版本控制工具:
-
特点:
- 每个开发者都有完整的项目副本(包括代码库和版本历史记录)。
- 开发者可以在本地进行提交、分支、合并等操作,而不必依赖于中央服务器。
-
优势:
- 本地操作速度快,不需要频繁与中央服务器交互,即使在没有网络连接的情况下也能进行大部分操作。
- 分布式架构更适合团队分散、地理位置分布广泛的开发团队。
- 更灵活的分支和合并机制,支持并行开发和多个工作流程。
-
缺点:
- 对于一些新手来说,理解分布式版本控制系统的概念和工作流程可能有一定的学习曲线。
- 由于每个开发者都有完整的项目副本,可能会占用更多的存储空间。
-
分区
工作区(git add)➡暂存区(git commit)➡本地库(生成历史版本 git push)➡远程库
- 代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般简称为“远程库”。
局域网:GitLab
互联网:GitHub、Gitee(码云)
Git常用命令
常用操作 | 含义 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱地址 | 设置用户签名 |
git config --list | 查看git配置信息 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git add . | 添加当前目录下所有的文件到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git log | 查看完整的记录 |
git reset --hard 版本号 | 版本穿梭 |
cat 文件名 | 查看文件内容 |
- 步骤
设置用户签名
初始化本地库
添加暂存区
提交到本地库
- git内部vim的操作
ps: vim是文本编辑器,类似于windows的记事本,它有两个模式,一个是编辑(插入)模式,一个是命令模式
操作 | 目的 |
---|---|
vim 文件名 | 进入 |
i | 编辑模式 |
esc | 命令模式 |
:w + 回车 | 保存(命令模式) |
:wq 或者 ZZ | 保存并退出(命令模式) |
:q! | 放弃修改并退出vim(命令模式) |
:e! | 放弃修改并返回命令模式(命令模式) |
分支
- 常用操作
操作 | 含义 |
---|---|
git branch 名称 | 创建分支 |
git branch -b 名称 | 创建分支,并切换到新创建的分支 |
git branch -v | 查看所有的分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名A | 将分支A |
git branch -m 名称A 名称B | 将分支A的名字修改为B |
git branch -m 名称A | 将当前分支改名为名称A |
- 合并与冲突
冲突的产生:在要合并的两个分支中修改了相同的文件,然后分别添加到暂存区、提交到本地库之后在进行合并就会产生冲突。以下是冲突产生的一个例子:
冲突的解决方法:
(1) 首先打开文件(vim 文件名)
有三行特殊符号
<<<<<< HEAD
内容一
=======
内容二
>>>>>>> 分支A的名称
/**
其中,HEAD 指向的是当前的分支
内容一部分是当前分支修改的内容
内容二部分是分支A修改的内容
*/
(2) 切换到编辑模式,手动修改最终要保留的内容,最后再删除那三行特殊符号,然后保存并退出vim
(3)将文件添加到暂存区(git add 文件名)
(4)将文件提交到本地库(git commit -m “文件描述”)!!!注意此处不再添加文件名
团队协作
团队内协作
跨团队协作
GitHub部分
远程库操作
操作 | 含义 |
---|---|
git remote -v | 查看当前所有远程地址的别名 |
git remote add 别名 远程库地址 | 为远程库起别名 |
git push 别名/远程库地址 分支A | 推送本地分支A上的内容到这个别名对应的远程仓库的分支A(如果远程库没有A分支,则重新创建) |
git push 别名/远程库地址 分支A:分支B | 推送本地仓库的分支A到远程仓库的分支B |
git clone 远程地址 | 将远程库的内容克隆到本地 |
git pull 远程库地址别名 远程分支A | 将远程库分支A的最先内容拉取下来后直接与本地当前分支合并 |
注意点:
- 远程库一般与本地库的名称一致
- 远程库别名一般与远程库名一致
- clone操作的三个小步骤:(1)拉取代码; (2)初始化本地库; (3)初始化分支名(默认为origin)
- 有多个账号在进行push、pull的时候,要去**“凭据管理器”**将其他的账号凭据删除才能进行
团队内协作
clone到本地库,然后修改完善,add到暂存区、commit到本地库、push到远程库(需要权限,如下)
邀请成员协作步骤:
settings -> manage access -> invite a collaborator -> 输入对方账号 -> 产生邀请函 -> 复制邀请函 -> 浏览器复制链接 -> 同意推送
-> 得到push权限
跨团队协作
协作步骤:
方法一:同团队协作
方法二:进入到项目 -> fork -> 在线编辑完成 -> pull request -> new pull reuest -> creat pull request -> 对方审核 -> merge pull request -> confirm merge
标签:Git,GitHub,暂存区,干货,git,本地,服务器,远程,分支 From: https://blog.csdn.net/m0_73777400/article/details/140966535