大家好,前段时间因为我想把自己的项目上传到github上,然后使用git的时候遇到了一堆问题,所以特写此篇文章,来跟大家聊一聊git的使用方法。
文章参考了网上许多资料,有bilibili的狂神说的视频以及公众号文章,有stormzhang的《从0开始学Github系列》等等。
我感觉我的文章结构写的还蛮清晰的。大家也可以通过目录看自己需要了解哪个,然后去看特定的也行。
简单来说git其实就是一个版本管理工具。我们可以使用git做很多事情,比如说:
- 我们想把本地的代码放到远程服务器里
- 版本迭代时,记录每个版本添加的功能以及代码
- 回退到特定的代码版本
- 多人协作,每个人负责一个功能时,大家需要在同一个代码的基础上进行修改。这个时候,大家需要互不影响的同时,又可以同步别人的代码
……
当然,如果看了这些还是有点摸不着头脑也没关系。看一看 git 的具体命令都是干什么的之后,每个人对 git 应该都会有自己的一套见解。
使用git之前,得先把它安装到我们自己的电脑上。
这里给出git的下载安装的网站,其余的大家如果不会,网上有很多教程,大家可以跟着教程安装就行。
- Mac:git-osx-installer (abandoned) download | SourceForge.net
- Windows:Git for Windows
- Linux:apt-get install git
在项目目录下点击右键,然后点击git bash。
然后会弹出这样一个窗口
我们在这个窗口里输入我们的命令即可。
使用git的时候,一定先要配置用户的用户名和邮箱,否则会报错。因为每一次的提交中都会带上这些信息,用来标识是谁做了这些更改。就像下图一样:
配置信息的命令格式为:
其中,global 是可选的。
–global 选项用于指定配置的作用范围是整个用户账户。
带了 --global 选项,无论你在这个用户的系统中使用哪个 Git 仓库,这些配置都会生效。
不带 --global 选项,那么这些配置项将只应用于当前 Git 仓库。
我们配置的是用户的用户名和邮箱,所以一般情况下都是带 --global 选项的。其命令为:
删除配置信息的命令格式为:
比如说我们现在要删除该用户的用户名的配置,那么可以执行如下命令:
- 查看所有当前生效的 Git 配置信息
它会显示当前项目的所有配置,包括系统级配置、全局配置和当前仓库级配置。Git 会根据优先级从高到低显示配置,优先显示当前仓库级别的配置,然后是全局配置,最后是系统配置。
命令:
- 查看系统级别的 Git 配置
显示在系统级别(对所有用户和所有仓库)生效的配置。
这些配置信息,其实都保存在我们电脑中的文件中。系统级别的配置,在 git 安装目录下的 etcgitconfig 文件当中。
命令:
- 查看用户级别的 Git 配置
显示当前用户的全局Git配置。
配置信息存储在 C:UsersAdministrator .gitconfig 文件当中。Administrator指的是账户名,每个人的账户名都不一样。
命令:
在真正介绍 git 命令之前,先介绍一下 git 中的各个工作区域。
git 在本地一共有三个工作区域,外加远程的 git 仓库,就是四个工作区域。
本地的工作区域有:
- 工作目录(Working Directory):就是我们电脑上存储项目的那个目录。
- 暂存区(Stage/Index):临时存放我们有改动的文件的区域。它其实就是一个文件,记录着每一次的改动都有哪些。
- 本地仓库(Repository 或Git Directory):存放数据的位置,里面放着提交的所有版本的数据。
除了上述的三个本地工作区域,还有一个远程的工作区域,叫远程仓库(Remote),它是存放代码的服务器,像github、gitee的存放代码的区域,都可以叫远程仓库。
下图是文件在四个区域内转换的关系和命令(图片借鉴自狂神说公众号文章)
其中History指的就是本地仓库。
使用 git 拉取代码的意思就是,使用 git 工具,把别人提交到远程仓库的代码下载到本地。
首先,我们要到想要存放代码的目录,然后进行git操作。
使用 git 拉取代码,一共有两种方式。
- git init 初始化 git 仓库
在使用 git 进行操作前,一定要先建一个 git 仓库才行。git init是用来初始化 git 仓库的一个命令。
我们到工作目录下面,执行下面命令
这样,就代表初始化了一个 git 仓库。
- git pull 拉取项目
建立完仓库之后,我们就可以使用git pull 进行项目拉取。
先找到要拉取的项目的url。
以我建立的github仓库为例,点击code的绿色按键,然后点击HTTPS下面的两个小方块图标,复制url。
然后,执行git pull 命令:
执行结果和上图差不多,就表示拉取成功啦。
第一个方法是先在本地建立仓库,然后再拉取项目。而git clone是直接把远程仓库搬到本地来。
举个例子,我首先建立了一个空的文件夹 test
然后我在一个空的文件夹 test 下面执行 git clone命令:
然后再看我的项目文件夹里的变化:
可以发现,我原本的test里又多了一个test文件夹,但是没有 .git 文件夹。这是因为我在我原本的test目录下,直接把我远程的 test 仓库一整个给搬了下来。所以我原本的test目录不算一个git仓库,test/test 目录才是一个 git 仓库。
这里有两种方法查看该目录文件夹是不是git仓库:
- 到工作目录下,看有没有 .git 文件夹。
.git 文件夹是隐藏项目,所以需要将隐藏项目也显示出来,才能看得见。
比如说在windows系统里,就可以如下操作:
- 使用git status 命令
在git bash中输入
如果git 仓库初始化成功了,显示如下图
如果git仓库没有初始化成功,那么就会如下图所示
想象一下,如果我们想要往自己的 github 账户提交代码,但又不希望别人随意提交,那么应该怎么办?所以说是不是应该在提交之前先验证一下身份。
Github从2021年8月14日开始,使用git对github进行身份验证操作的时候不再接受使用账号密码形式clone和push代码。这里身份验证有别的两个方案,一个是使用access_token,另一个是使用SSH。
使用asscess_token的可以看以下两篇文章,我个人跟着做了一遍感觉步骤写的还挺详细的。
GitHub改为token验证后,如何提交代码?_new personal access token-CSDN博客
GitHub使用Personal access token - 小旭的blog - 博客园 (cnblogs.com)
当然,我认为用SSH比较简单一点吧,所以下面主要来讲一下怎么用SSH授权。
SSH是一种协议标准,目的是为了实现安全远程登陆以及其它安全服务。github身份验证,就可以用这个,而且是一种一劳永逸的方法。
Linux 和 Mac 是默认安装了 SSH的,windows 的git bash里也带了SSH。
可以在终端输入ssh ,查看有没有安装SSH。出现以下提示,说明已经装了SSH。
如果已经安装了SSH,那么可以输入以下命令生成ssh key。该命令的含义,是使用rsa算法生成密钥。
输入之后,连按三个回车键(什么都不需要输入)。然后就会生成两个文件 – id_rsa 和 id_rsa.pub。其中id_rsa是私钥,id_rsa.pub是公钥。
这两个文件默认生成目录为:
- linux/Mac系统:~/.ssh
- win系统:/C/users/username/.ssh
这俩都是隐藏目录。
下面稍微解释一下ssh身份验证的原理,不想看的可以跳过哈,不影响后面使用。
私钥和公钥,这两个配对起来,叫一对密钥。
公钥加密后的密文,只能通过相应的私钥才能解密。而且通过公钥推理出密钥几乎是没有可能的。
那么github远程登录是怎么做的呢。
- 首先,我们本地主机要向远程主机发送登录请求。
- 然后远程主机收到消息后,随机生成一个字符串并用公钥加密,发回给本地。
- 本地拿到该字符串,用存放在本地的私钥进行解密,再次发送到远程主机。
- 远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。
从上述的步骤来看,我们要把公钥放在远程主机上面,也就是把它放在服务器上面。也就是把 id_rsa.pub文件中的内容放到Github上去(gitee同理)。
- 点击右上角头像按钮
- 点击设置
- 点击ssh密钥按钮
- 点击添加新ssh密钥
- 在红色框里把id_rsa.pub文件中的东西复制粘贴过来,title那一栏不需要填写。然后点击下方Add SSH key按钮。
- 生成成功后的界面是这样的。
SSH key添加成功之后,输入
输入完之后会出现这种界面,大概意思是以前没有连接过这个主机,问我们是否信任Github的服务器。我们只需要手动输入 yes ,然后回车就好了。
然后再次测试一下,显示如下图所示,就代表添加成功啦。
如下图所示,向github提交代码需要下图三个步骤。分别是git add -> git commit -> git push。
1. git add
执行命令,把我们文件放进暂存区。
具体命令是
示例
2. git commit
这个命令的意思是说把暂存区中有变更的文件提交到本地仓库。比如新添加的文件、有更改的文件、删除的文件、文件的权限变化了等等。
具体命令是
示例:
3. 和远程仓库连接
我们现在已经把代码放到了本地仓库,那么如果想把本地仓库的东西推送到远程仓库,需要把本地的git仓库和和远程的仓库关联起来。执行下列命令:
:你的远程仓库名(本地的别名),很多时候都会取名origin,当然你也可以取别的名字。
:你远程仓库的URL,可以去你的github仓库里,如下图,点击code,然后点击SSH就可以看到。上述只是我的一个示例,需要换成你们自己的URL。
4. git push
把本地仓库和远程仓库关联之后,就可以用git push 命令来推送代码。
具体命令为
示例:
关于分支可以看文章后面。
git status命令是查看当前暂存区的状态的。
具体的输出有:
- 未跟踪的文件 (Untracked files):指仓库中新添加的文件,但还没有被 Git 跟踪,也就是说它们没有被添加到暂存区。你可以使用 命令来跟踪这些文件。
- 已修改但未暂存的文件 (Changes not staged for commit):这些是已经被修改过的文件,但修改还没有被添加到暂存区。如果想把它们添加到下一个提交中,需要使用 。
- 已暂存的文件 (Changes to be committed):这些文件已经被添加到暂存区,并且将在下次执行 时被提交。
- 已提交但本地与远程仓库不同步的分支状态:会显示当前分支是否与远程分支有不同步的提交(比如本地有新的提交还未推送到远程,或者远程有新的提交本地还没有拉取)。
示例:
这个输出展示了:
- 你当前位于 分支,并且和远程仓库的 分支同步。(关于分支可以看后面的解释)
- 已经被修改,但尚未暂存。
- 是一个新文件,未被 Git 跟踪。
git log 命令可以查看所有产生的 commit 记录,包括提交的用户名,提交的用户邮箱,提交时间信息和附带信息,就是我们 的 first commit信息。
git中的分支,可以理解为是不同的工作线。他们互相是独立的,不相互影响。
我们可以利用这个,来同时开发不同的功能,修复不同发bug。比如A和B同时在开发不同的功能,那么他们可以分别新建一个分支,最后开发完后,把他们两个的分支再合并起来就好了。
不过每个仓库都有一个主线,例如main和master分支,这里一般放的是已发布的代码。
直接输入 ,意思就是查看当前仓库的所有分支。
前面有星号的是当前分支。
如果想在当前仓库添加新分支,可以写为
比如我想新加一个名叫 a 的分支,就可以写
如果想要切换当前分支,就需要下面的命令:
比如切换到a分支就可以写成
如果不想先用branch新建分支再切换,想一步到位,那么就可以使命令
比如想新建个 c 分支,并把当前分支换成 c ,就可以执行命令
如果说我们想删除一个分支,可以执行命令
比如我们想删除a分支,就可以写成
不过,有的时候可能回删除失败。比如要删除的a分支还没有合并到main分支。这种情况下,执行 是删除不了的。我们可以使用下面的命令来删除
比如强制删除a分支:
假设某个功能已经在 a 分支写的差不多了,现在要将它合并到main分支里,然后上线。
这种情况下,需要两步走:
- 把当前分支切换到main分支,如果已经在 main 分支里了,就不用切换了
- 执行 git merge a命令,意思时把a分支合并到当前分支。
不过,有的时候会因为产生冲突而失败。这个时候需要手动去解决这些冲突。
到此这篇git使用教程(GIT使用教程)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-yfwjc/38731.html