【好懂】全网最通俗的Git入门教程

计算机方向搞科研、做项目,通常都需要github。

如果你想比较系统地管理自己的项目、上传到Github,通常我们要用Git。我相信点进来的盒友们应该也是冲着这个来的。

比起网上泛滥的乱七八糟、往往只讲某个部分的教程不同,这篇文章将完整介绍入门Git的所有基础操作,而且,我相信我的介绍应该是全网最通俗的了,小刻看了都能跟着完成入门。

init

git init

初始化,创建.git目录

add

就像复制文件之前,要先选择要复制的文件;

这个也是这样,把后面的参数对应的文件选择,记到一个“暂存区”,表示要提交的内容。

git add .
或者
git add 目标文件

通常直接git add .,点是linux的一种路径写法,表示当前目录下所有文件。

但是,有些时候,我们写了好几个文件,其中有的只写了一半。按照规范,每一次提交的内容应该是清晰的,不要说什么做了一半。此时我们就可以先只提交写完了的,没写完的等写完了再提交。

commit

提交。把add到暂存区里的内容

如前面所说,每一次提交的功能应该是确定的,所以我们得给提交写个备注,标明这次提交做了什么。

git commit -m "说明文本内容"

通常这样写。

工作区、暂存区和仓库

理解git的工作流程,包含了这三个概念:

工作区,就是指你放代码的那个文件夹。就像一个工作台一样,里面放着这会儿干活要操作的部分(分支,这个暂时不多介绍)

暂存区,如前面所说,是一个类似购物袋的东西,用来选择要提交的部分。

仓库就是存储代码备份的地方,在.git文件夹里面那个就叫本地仓库。还可以有远程仓库,存到github等网络位置。

设置个人信息

在提交前,要设置好自己的个人信息,这是因为日志中会记录提交者和他的邮箱,方便协作和管理。

尤其是如果要提交到网络位置这个就更加重要了。

如果是非正式的使用倒是无所谓可以随便填。

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

通常这样设置。这是全局设置,会应用于这台计算机上所有的仓库。

也可以单独设置这个仓库的

关联到github

在把自己的仓库提交到github上之前,需要先关联。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

用这个创建自己的ssh密钥。把里面的邮箱改成自己的邮箱。

然后他就会问你把密钥保存在哪里,一般放在默认位置就可以了。,但是要记得默认位置,路径。

打开刚刚你保存导出密钥那个地方,里面会有一个id_rsa和id_rsa.pub这两个文件(默认名称是这两个)。.pub那个就是你的公钥,另外一个是你的私钥。把那个点pub文件用记事本打开,复制里面的内容。

打开Github,登录账号,点右上角自己的头像,Setting,然后点左边的SSH and GPG keys。在第1个SSH密钥那里添加密钥,把刚刚复制的公钥内容粘贴进去。

设置好公钥之后就可以在本地测试连接。

(下面这几步,如果是windows系统,建议在git附带的那个git bash里执行,不然可能会出问题。)

ssh -T git@github.com

用这个可以测试是否可以正常连接

如果正常,会显示

The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

这是第一次通过SSH连接到Github的正常提示,意思是目标主机指纹为`SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU,让你看看是不是真的、不是伪造的。

如果和这个一样就yes就好了。

再执行一次测试连接,如果显示

Hi 你的github用户名! You've successfully authenticated, but GitHub does not provide shell access.

就是成功了。

如果失败了,显示

git@github.com: Permission denied (publickey).

先看看前面导入SSH公钥到Github是否做对了。没问题的话,一般是git没带上你刚刚生成的私钥。

这种情况可以通过这个手动加载

ssh-add 到你私钥的路径

上传到github

搞定了之后,就添加远程仓库。

如下所示。把里面的连接换成你自己的github仓库的链接。

git remote add origin https://github.com/Alice-Drop/Coding_Notes_Project.git

这样我们就在git软件里添加了github仓库,命名为了origin

然后

git remote -v

应该就能看到添加的这个远程仓库了。

输入

git push origin main

即可将当前分支提交到github上。

注意,git默认的分支名称是master,而github已经改成了main。

【分支的内容后面讲】

如果你需要指定提交哪个分支上去,就

git push origin 本地分支名:线上分支名

即可。

出现以下内容即提交成功

遇到下面这样的 ssl error不要慌,多试几次就好了。

fatal: unable to access 'https://github.com/Alice-Drop/Coding_Notes_Project.git/': OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0

可能遇到的疑难杂症

本地和远程完全不一样

$ git push origin master:main
To https://github.com/Alice-Drop/Coding_Notes_Project.git
! [rejected]       master -> main (fetch first)
error: failed to push some refs to 'https://github.com/Alice-Drop/Coding_Notes_Project.git'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

新手刚接触git,很可能兴致勃勃地就在github上创建了git仓库并且手动在网页上传了一些东西。

包括本教程作为零基础教程,按照比较好理解的顺序来的,也很可能会导致你顺带就这样做了。

这个时候,你用git上传的内容,会和github已经存在的内容完全没有共同部分(因为是分别创建的,创建时间、最初的文件都不同)

这时候,我们需要先把上面的内容pull到本地,与我们本地的文件合并,解决冲突,然后再提交。

git pull origin main --allow-unrelated-histories

后面的--allow-unrelated-histories是为了合并两个没有共同部分的内容。

执行后,如果遇到冲突就会让你解决冲突(一般没有),没有冲突了就会显示

Merge branch 'main' of https://github.com/Alice-Drop/Coding_Notes_Project
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.

这是VIM编辑器,git让你输入这次操作的提示信息。我们可以保留默认的内容。按ESC然后输入

:wq

按回车即可退出。

这时应该就解决了冲突,再去提交即可。


更多游戏资讯请关注:电玩帮游戏资讯专区

电玩帮图文攻略 www.vgover.com