计算机方向搞科研、做项目,通常都需要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