一、GIT原理【这部分也挺简单,可以看看,如果没时间可以直接跳到第二部分】
Git 是一种分布式版本控制系统,用于管理软件项目的源代码。它是由 Linux 之父 Linus Torvalds 开发的,并已经成为了现代软件开发领域中最流行的版本控制系统之一。
使用 Git 可以追踪代码的历史修改记录,方便团队协作、代码共享和代码重构。Git 的基本工作流程如下:
- 在开始编写代码之前,首先需要创建一个 Git 仓库(repository),用于存储代码和版本历史记录。
- 在编写代码时,可以通过
git add
命令将更改的文件添加到 Git 的暂存区(staging area)中。 - 通过
git commit
命令将暂存区中的更改提交到 Git 仓库中,并生成一个新的版本号(commit hash)。 - 如果需要撤销某个提交,可以使用
git revert
命令来创建一个新的提交,该提交将会抵消先前的提交效果。 - 如果需要合并不同分支的代码,可以使用
git merge
命令进行合并。 - 如果需要查看代码的历史提交记录,可以使用
git log
命令来获取详细信息。 - 如果需要将代码推送到远程仓库,可以使用
git push
命令将本地代码推送到远程仓库。 - 如果需要从远程仓库中获取代码,可以使用
git pull
命令将远程代码拉取到本地。
- Workspace:工作区
- Index / Stage:暂存区
- Repository:仓库区(或本地仓库)
- Remote:远程仓库
SVN与Git的的区别
SVN和Git都是版本控制系统,但它们有以下区别:
- 分布式 vs 集中式:Git 是一种分布式版本控制系统,而 SVN 是一种集中式版本控制系统。在 Git 中,每个开发者都拥有本地代码库的完整副本,可以离线工作并在不同的工作流程之间自由转换。而在 SVN 中,所有开发者共享同一个中央代码库,并且需要有网络连接才能进行版本控制操作。
- 分支管理:Git 在分支管理方面比 SVN 更加强大和灵活。Git 的分支非常轻量级,创建和合并分支也很容易,因此可以轻松实现多人协作和并行开发。而在 SVN 中,分支比较重量级(即创建和合并分支需要花费相对更多的时间和资源),因此往往只用于重要的版本分支。
- 版本号:Git 使用 SHA-1 哈希值来标识每个提交,而 SVN 采用递增的数字版本号来标识每个提交。SHA-1 哈希值保证了每个提交的唯一性,而递增版本号则简化了版本控制过程。
- 整体性:由于 SVN 是一种集中式版本控制系统,因此所有数据都存储在中央代码库中。如果中央代码库损坏或丢失,可能会导致数据丢失或无法恢复。而 Git 是一种分布式版本控制系统,每个开发者都拥有完整的代码库副本,保证了代码的整体性和可靠性。
- 性能:Git 比 SVN 更快,特别是在处理大型仓库、分支合并以及比较代码差异时。Git 使用基于内容的哈希算法来检测文件是否修改,而 SVN 则需要检查文件的元数据(如时间戳和文件大小)来确定是否修改。
总之,虽然 SVN 和 Git 都是版本控制系统,但它们的设计和实现方式存在较大差异,开发人员应根据自身需求选择最适合的版本控制系统。
二、安装Git
2.1 获取Git安装程序
到Git官网下载,网站地址:https://git-scm.com/downloads,如下图
因为我们是用Windows系统上的浏览器访问的,Git官网自动之别到了我使用的操作系统,所以右侧直接显示下载使用Windows系统的最新版本(如果识别错误,可以在中间选择系统),点击即可下载。我下载的是 2.24.0 for Windows,文件名称是“Git-2.24.0.2-64-bit.exe”。下载到电脑上之后,鼠标双击这个文件即可进入安装过程。
2.2 Git安装过程
双击看到的第一个界面如下图:
01、使用许可声明
点击“Next”进入下图页面:
02、选择安装路径
在输入框内输入想要安装到的本机路径,也就是实际文件夹位置,或点击“Browse...”选择已经存在的文件夹,然后点击“Next”按钮继续,进入下图界面:
03、选择安装组件
上图红框内的选项是默认勾选的,建议不要动。绿色框1是决定是否在桌面创建快捷方式的。绿色框2是决定在所有控制台窗口中使用TrueType字体和是否每天检查Git是否有Windows更新的。这些根据自己需要选择。
点击“Next”按钮进入下图界面:
04、选择开始菜单页
这个界面是创建开始菜单中的名称,不需要修改,直接点“Next”按钮继续到下图的界面:
05、选择Git文件默认的编辑器
这个页面是在选择Git文件默认的编辑器,很少用到,所以默认Vim即可,直接点“Next”按钮继续到下图的界面:
06、调整您的PATH环境
这个界面是调整您的PATH环境。
第一种配置是“仅从Git Bash使用Git”。这是最安全的选择,因为您的PATH根本不会被修改。您只能使用 Git Bash 的 Git 命令行工具。但是这将不能通过第三方软件使用。
第二种配置是“从命令行以及第三方软件进行Git”。该选项被认为是安全的,因为它仅向PATH添加了一些最小的Git包装器,以避免使用可选的Unix工具造成环境混乱。
您将能够从Git Bash,命令提示符和Windows PowerShell以及在PATH中寻找Git的任何第三方软件中使用Git。这也是推荐的选项。
第三种配置是“从命令提示符使用Git和可选的Unix工具”。警告:这将覆盖Windows工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。
我选择推荐的选项第二种配置,点击“Next”按钮继续到下图的界面:
07、选择HTTPS后端传输
这个界面是选择HTTPS后端传输。
第一个选项是“使用 OpenSSL 库”。服务器证书将使用ca-bundle.crt文件进行验证。这也是我们常用的选项。
第二个选项是“使用本地 Windows 安全通道库”。服务器证书将使用Windows证书存储验证。此选项还允许您使用公司的内部根CA证书,例如通过Active Directory Domain Services 。
我使用默认选项第一项,点击“Next”按钮继续到下图的界面:
08、配置行尾符号转换
这个界面是配置行尾符号转换。
第一个选项是“签出Windows风格,提交Unix风格的行尾”。签出文本文件时,Git会将LF转换为CRLF。提交文本文件时,CRLF将转换为LF。对于跨平台项目,这是Windows上的推荐设置(“ core.autocrlf”设置为“ true”)
第二个选项是“按原样签出,提交Unix样式的行尾”。签出文本文件时,Git不会执行任何转换。 提交文本文件时,CRLF将转换为LF。对于跨平台项目,这是Unix上的建议设置(“ core.autocrlf”设置为“ input”)
第三种选项是“按原样签出,按原样提交”。当签出或提交文本文件时,Git不会执行任何转换。不建议跨平台项目选择此选项(“ core.autocrlf”设置为“ false”)
我选择第一种选项,点击“Next”按钮继续到下图的界面:
09、配置终端模拟器以与Git Bash一起使用
这个界面是配置终端模拟器以与Git Bash一起使用。
第一个选项是“使用MinTTY(MSYS2的默认终端)”。Git Bash将使用MinTTY作为终端模拟器,该模拟器具有可调整大小的窗口,非矩形选择和Unicode字体。Windows控制台程序(例如交互式Python)必须通过“ winpty”启动才能在MinTTY中运行。
第二个选项是“使用Windows的默认控制台窗口”。Git将使用Windows的默认控制台窗口(“cmd.exe”),该窗口可以与Win32控制台程序(如交互式Python或node.js)一起使用,但默认的回滚非常有限,需要配置为使用unicode 字体以正确显示非ASCII字符,并且在Windows 10之前,其窗口不能自由调整大小,并且只允许矩形文本选择。
我选择默认的第一种选项,点击“Next”按钮继续到下图的界面:
10、配置配置额外的选项
这个界面是配置配置额外的选项。
第一个选项是“启用文件系统缓存”。文件系统数据将被批量读取并缓存在内存中用于某些操作(“core.fscache”设置为“true”)。 这提供了显著的性能提升。
第二个选项是“启用Git凭证管理器”。Windows的Git凭证管理器为Windows提供安全的Git凭证存储,最显着的是对Visual Studio Team Services和GitHub的多因素身份验证支持。 (需要.NET Framework v4.5.1或更高版本)。
第三个选项是“启用符号链接”。启用符号链接(需要SeCreateSymbolicLink权限)。请注意,现有存储库不受此设置的影响。
我勾选默认的第一、第二选项,点击“Next”按钮继续到下图的界面:
11、配置实验选项
这个界面是配置实验选项。
启用实验性的内置添加 -i / -p。(新!)使用实验性的内置交互式add(“ git add -i”或“ git add -p”)。这使其速度更快(尤其是启动!),但尚未被认为是可靠的。
默认不勾选,直接点击“Next”按钮继续到下图的安装进度界面:
12、安装进度指示
安装进度结束之后,会出现下图的完成Git安装向导界面:
13、安装完成
在这个界面,可以勾选是否启动启动Git Bash和是否查看发行说明,然后点“Finish”按钮退出安装界面。
14、启动测试
到此,Git的安装完成,可以在开始菜单中看到Git的三个启动图标(Git Bash、Git CMD(Deprecated)、Git GUI)。
Git Bash,是Git配套的一个控制台,点击打开如下图:
Git CMD(Deprecated),是通过CMD使用Git(不推荐使用),点击打开如下图:
Git GUI,是Git的可视化操作工具,点击打开如下图:
三、Git连接Gitlab
3.1 gitlab准备工作
1、在GitLab上创建一个账户:如果您还没有GitLab账户,请在GitLab官网(https://gitlab.com/users/sign_in)上创建一个账户。
2、创建一个新的Git仓库:登录到您的GitLab账户,然后在页面上创建一个新的Git仓库。请注意Git仓库的名称和位置,因为这些信息将用于配置本地Git。
3.2 本地计算机准备工作及配置git
1、在计算机上创建个文件夹(用于专门存/传到gitlab或github代码,例如GitCode),进入文件夹内,右键打开Git Bash终端,并输入以下命令以设置您的Git用户名和电子邮件地址(最好和gitlab用相同的用户名和电子邮件地址,这样方便记。例如我的电子邮件地址是xxx@qq.com)
git config --global user.name "BosserWang"
git config --global user.email "[email protected]"
(BosserWang是用户名,xxxxx@xxx.com是电子邮箱,我的是qq邮箱,大家根据自己的信息自行修改)
2、生成SSH密钥:输入以下命令以生成SSH密钥:
ssh-keygen -t rsa -C "[email protected]"
这里的地址和上面的电子邮箱地址是同一个地址。
然后一路回车即可。
3、添加SSH密钥到GitLab:使用以下命令将SSH密钥添加到GitLab:
cat ~/.ssh/id_rsa.pub
(~表示用户目录,比如我的windows就是C:\Users\Administrator.DESKTOP,并复制下面红色框内的内容)
4、打开gitlab,把ssh添加进去。
5、进入计算机上创建的文件夹(我的是GitCode),右键选择->Git Bash Here 通过
git init
命令把这个目录变成Git可以管理的仓库(多了这么一个文件.git)
git init
6、克隆项目
git clone 项目地址
7、提交代码到Gitlab
把代码文件全部copy到刚刚克隆的项目文件夹中,右键选择->Git Bash Here 。
第一步,用命令
git add
告诉Git,把文件添加到仓库:
git add 文件名 或者 git add .
(“git add“后加“.”则添加全部文件,也可以加"*.txt"表示添加全部需要提交的txt文件 )
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第二步,用命令
git commit
告诉Git,把文件提交到仓库:
git commit -m "20231121"
简单解释一下
git commit
命令,
-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
嫌麻烦不想输入
-m "xxx"
行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。
git commit
命令执行成功后会告诉你,
1 file changed
:1个文件被改动(我们新添加的readme.txt文件);
2 insertions
:插入了两行内容(readme.txt有两行内容)。
git commit -m "增加了一张地铁图"
为什么Git添加文件需要
add
,
commit
一共两步呢?因为
commit
可以一次提交很多文件,所以你可以多次
add
不同的文件。
最后输入以下命令,提交到gitlab
git push origin master 或者 git push
git push origin master的意思就是上传本地当前分支代码到master分支。git push是上传本地所有分支代码到远程对应的分支上。
若在执行上述操作的时候,如果报错:
On branch master
nothing to commit, working tree clean
To [email protected]:<your_username>/<your_repository>.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to '[email protected]:<your_username>/<your_repository>.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
代表您本地的分支与远程分支的提交历史不一致,所以需要先将远程分支的更改合并到本地分支,然后再将本地更改推送到远程分支。
要解决这个问题,请按照以下步骤操作:
运行以下命令拉取远程分支的更改:
git pull origin master
这将合并远程分支的更改到您本地的分支。
如果在合并过程中出现冲突,请解决冲突并提交更改。
然后再次运行以下命令将更改推送到远程分支:
git push origin master
这样就能够成功地将更改推送到远程分支了。
如果以上还报错,如:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:<your_username>/<your_repository>.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
这个错误提示表明,远程分支比您本地分支更新,因此在推送更改之前,您需要先将远程分支上的更改合并到本地分支中。
为了解决此问题,您可以执行以下操作:
运行以下命令来拉取远程分支的更改:
git pull --rebase origin master
这将从远程分支下载并合并最新的更改,并使您的本地分支保持最新状态。
如果在合并过程中出现冲突,请解决冲突并提交更改。
然后再次运行以下命令将更改推送到远程分支:
git push origin master
就可以解决问题了!
四、Git连接Github
连接github的操作和连接gitlab一摸一样。不再重述,如有问题,可以在评论区提问。
版权归原作者 MrRoose 所有, 如有侵权,请联系我们删除。