StarryCat
Astronomy
喵喵的灿烂星空

Git学习笔记(上)

说在前面

GitHub上各种项目了解到Git,过去使用Git时遇到不会的都只是去百度谷歌搜索,也有简单看过廖老师的Git教程,但也是草草看完,没有做什么学习笔记。用的少记性也不好,然后到用时又忘记,又要去搜索,很是麻烦耗时,是应该开始系统学习了。这篇文章仅作为自己的Git学习笔记,以备后用。 :cry:

Git的安装

现在自己主要用的操作系统是Win10,Linux目前只在VirtualBox虚拟机和VPS上用,所以我这里安装使用的Git是Windows版:Git for Windows ,下载.exe文件后默认安装即可。

搜索git打开Git Bash。

https://starrycat.me/wp-content/uploads/2018/08/04_001.png

使用git前需要设置用户名e-mail地址,每次提交都会写入这些信息,shell命令行中输入:

https://starrycat.me/wp-content/uploads/2018/08/04_002-1.png

config –global表示全局使用此参数。检查配置信息:

Git设置默认文本编辑器为gVim(更新)

点击打开折叠
keyboard_arrow_down

在Git安装目录/usr/bin建立一个gvim脚本(复制vi一份另存为gvim):

命令结尾的&用于gVim启动后终端阻塞,置于后台运行。中间的路径改为你的gvim路径,然后Git Bash设置:

以后可以使用命令gvim来调用gVim编辑文件。

Repository的创建和基本操作

创建

repository意为版本仓库,创建项目目录(工作区)并进入,使用git管理项目版本:

https://starrycat.me/wp-content/uploads/2018/08/04_003-1.png

注意
.git目录是git用来跟踪管理版本库的,没事不要手动修改!!

Git Bare Repository:仅包含 .git 目录,不包含其管理的文件,可用作 dotfiles 管理[1][2][3][4]

添加、提交文件到仓库

我的Win10之前已经安装vim,所以这里我用vim编辑:

命令git add添加(到暂存区):

命令git commit提交(到当前分支),-m参数后可写本次提交的简要说明:

https://starrycat.me/wp-content/uploads/2018/08/04_004.png

可以多次add文件,可以一次commit多个文件。

仓库状态概览

vim继续修改readme.txt内容,命令git status查询仓库状态:

https://starrycat.me/wp-content/uploads/2018/08/04_005.png

命令git diff查看被更改文件的不同:

https://starrycat.me/wp-content/uploads/2018/08/04_006.png

确认修改后添加,提交文件:

https://starrycat.me/wp-content/uploads/2018/08/04_007.png

版本回退

vim继续修改readme.txt内容:

https://starrycat.me/wp-content/uploads/2018/08/04_008.png

目前项目有三个历史版本,命令git log可查:

https://starrycat.me/wp-content/uploads/2018/08/04_009.png

每次commit提交相当于做一个“快照”,长串为commit_id(版本号),每次commit通过SHA-1计算。指针HEAD指向当前版本,上一版本为HEAD^,上上一版本为HEAD^^

命令git reset回退版本:

命令git reflog可查历史命令,根据commit_id能回到未来(误删)一定时间内的版本[5]

https://starrycat.me/wp-content/uploads/2018/08/04_011.png

工作区修改的管理

工作区的文件修改没有add(到暂存区),使用命令git status可以知道,通过命令git checkout — <file>可以丢弃工作区的文件修改:

https://starrycat.me/wp-content/uploads/2018/08/04_012.png

工作区的文件修改已经add(到暂存区),同样使用命令git status可以知道,文件没有提交(到当前分支),通过命令git reset HEAD <file>将被暂存的文件修改重新放回工作区,然后再按前一种情况丢弃修改:

https://starrycat.me/wp-content/uploads/2018/08/04_13.png

commit撤销,保留修改(更新)

点击打开折叠
keyboard_arrow_down

工作区的文件修改已经 commit ,需要撤销 commit 并撤销 add 但是保留工作区的文件修改:

若仅撤销 commit 不撤销 add 但是保留工作区的文件修改:

远程仓库

创建添加SSH Key

本地Git仓库与远程GitHub仓库(免费但自己项目公开)可以通过SSH协议加密传输,所以我们需要创建SSH Key,确认当前用户没有创建过之后,通过在Git Bash输入以下命令创建:

把邮箱换成自己的,无需设密码,一路默认回车即可。成功后在用户主目录下有.ssh目录生成,里面的id_rsaid_rsa.pub两个文件,就是SSH Key的秘钥对,其中id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

登陆你的GitHub账户,打开“Settings”,进入“SSH and GPG keys”页面,选择New SSH key,填上Title(建议填上能标识你的设备的),然后将文件id_rsa.pub里的内容粘贴在Key框中,然后点击Add SSH key,验证GitHub账户后你就可以看到添加的Key了。

https://starrycat.me/wp-content/uploads/2018/08/04_014-1024x487.png

本地仓库推送远程

打开你的GitHub账户首页,新建远程仓库,Repository name填learngit,其他默认,即可建立一个空仓库。

https://starrycat.me/wp-content/uploads/2018/08/04_017-1024x487.png https://starrycat.me/wp-content/uploads/2018/08/04_020-1024x487.png

根据 GitHub的提示,我们选择关联本地Git仓库,将本地仓库内容推送至远程仓库,在本地learngit仓库中输入命令:

注意上面要填你自己的GitHub账户名,Git默认的远程库名为origin,然后将本地仓库内容推送至远程仓库:

出现SSH指纹验证警告输入yes即可,不放心可比对GitHub的指纹信息,推送成功后今后本地做出更改,可通过以下命令推送至GitHub:

https://starrycat.me/wp-content/uploads/2018/08/04_030-1024x487.png

push时需要登陆GitHub的解决办法(更新)

点击打开折叠
keyboard_arrow_down

之前我们在机器上做了添加SSH Key的操作,但之后如果用了https协议push,可能会出现需要登陆GitHub的状况,使用git remote -v可查看是否为https

如是https的关联,可先移除在添加SSH协议的关联,这是或许就是SSH Key的方便之处吧

然后愉快的push吧

远程仓库克隆至本地

在GitHub创建新仓库,仓库名为gitskills

https://starrycat.me/wp-content/uploads/2018/08/04_031-1024x487.png

GitHub会帮我们建立一个README.md文件。

https://starrycat.me/wp-content/uploads/2018/08/04_032-1024x695.png

现在,让我们克隆远程仓库到本地仓库吧,打开Git Bash,输入命令:

https://starrycat.me/wp-content/uploads/2018/08/04_033.png

clone指定分支(更新)

点击打开折叠
keyboard_arrow_down

clone时使用参数-b可以clone指定分支

接下篇:分支管理和标签管理

Git学习笔记(下)

赞赏

发表评论

textsms
account_circle
email

喵喵的灿烂星空

Git学习笔记(上)
说在前面 从GitHub上各种项目了解到Git,过去使用Git时遇到不会的都只是去百度谷歌搜索,也有简单看过廖老师的Git教程,但也是草草看完,没有做什么学习笔记。用的少记性也不好,然后到…
扫描二维码继续阅读
2018-08-22