这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战
提到Git,我们得先来了解一下版本控制和版本控制工具😋
版本控制用于个人开发改进迭代以及团队协作中,版本控制工具应该具备以下功能:协同修改、数据备份、版本管理、权限控制、历史记录和分支管理等。接下来,进入正文:
Git简介📜
Git是由Linux之父Linus开发出来的一款分布式版本控制工具,据说他只花了两周就写出来了。Git结构可分为工作区、暂存区以及本地库,其中工作区用于写代码,暂存区用于临时存储,本地库存储历史版本。(图示如下)
Git和代码托管中心🏠
代码托管中心是用来维护远程库的,在局域网环境下可以是GitLab服务器,在外网环境下可以是GitHub或码云。
Git命令行基本操作✨
1. 本地库操作
本地库初始化
git init,设置签名,签名分为项目级别/仓库级别(仅在当前本地库范围内有效)、系统用户级别(在登录当前操作系统的用户范围有效),后者在设置的时候只是在前者的基础上加多一个"--global"参数。
git init
git config user.name 用户名
git config user.email 邮箱地址
git config --global user.name 用户名
git config --global user.email 邮箱地址
注意:签名只是为了区分身份,这里的name和email和GitHub上注册的用户名和邮箱没有半毛钱关系,不用保持一致。
查看工作区、暂存区状态
git status
将工作区的新建/修改添加到暂存区
git add 文件名
(题外话:“vim 文件名”操作之后,进入文件,点击“i”进入编辑状态,即可对文件进行自由编辑,退出时按ESC,再输入“:wq”即可)
将暂存区内容提交到本地库
如果是git commit直接加文件名,则会打开对应文件,自己再在第一行输入提交描述信息。
git commit -m “提交描述信息” 文件名
查看历史记录
git log
可添加三个参数,–pretty=oneline/–oneline 或者使用git reflog。
前进后退历史版本
- 基于索引值(推荐):git reset --hard加部分索引值(由git reflog可得)即可
- 使用^符号(只能后退):git reset --hard HEAD(后加几个异或符号表示退几步)
- 使用~符号(只能后退):git reset --hard HEAD(后使用 ~加后退步数)
删除文件
rm文件名
删除文件后找回
前提是文件存在的状态提交到了暂存区。
git reset --hard [指针位置]
如果删除文件的操作已提交到了本地库,则指针位置指向历史记录,若未提交到本地库,则指针位置指向HEAD。
比较文件
git diff 文件名//将工作区文件与暂存区文件比较
git diff 本地库历史版本 文件名//将工作区文件与本地库历史记录比较
如果git diff后不加文件名,则目录中有多少个文件就会比较多少个文件。
分支管理
查看分支:
git branch -v
创建分支:
git branch 分支名
切换分支:
git checkout 分支名
合并分支:
首先切换到最终要合并到的分支上,然后 git merge 开发了新内容的分支名 解决合并中出现的冲突:打开冲突文件,删除里面的特殊符号,以及修改为自己想要的版本,然后再提交即可。
2. 远程库操作
团队协同开发或个人迭代开发
先登录GitHub创建一个远程库
然后复制下远程库地址,
来到命令行使用“git remote add 远程库别名 远程库地址”为远程库地址创建别名,方便以后访问。
推送分支:git push 远程库别名 欲推送分支名
如果团队中其他人要协同开发,首先要使用“git clone 远程库地址”下载项目,clone操作实则有三个功效,包括把远程库下载到本地、初始化以及创建origin远程地址别名。 注意团队中其他人要通过邀请之后才可以进行推送操作,邀请通过GitHub上该项目的Settings->Manage access->Invite->Collaborator。
拉取操作:pull操作相当于fetch操作加上merge操作,即: “git pull 远程库地址 欲合并分支名”=“git fetch 远程库别名 欲拉取分支名”+“git merge 远程库别名/欲合并分支名”(在git fetch 之后可使用“git checkout 远程库别名/拉取分支名”,然后查看下拉取下来的分支的内容,确定无误后再执行merge操作)
解决协同开发时冲突:如果不是基于GitHub远程库的最新版所做的修改,不能执行推送操作,必须先拉取。拉取下来后如果处于冲突状态,则按照前面所述“分支冲突解决”操作。
跨团队协作
团队外的人登录自己的GitHub账号,输入项目地址进行搜索,然后点击Fork,就会把项目fork到自己的账号,再复制自己账号下的项目地址,到命令行进行“git clone 项目地址”操作,修改之后再执行推送操作。推送完成后前往GitHub点击Pull requests->new pull request->Create pull request。
团队内负责项目管理的人登录自己账号,点击Pull requests即可看到团队外的人所提交的修改,点开后审核(查看Commits和Files changed)无误就可以Merge pull request->添加描述->Confirm merge。