文章目录
说在前面
从GitHub上各种项目了解到Git,过去使用Git时遇到不会的都只是去百度谷歌搜索,也有简单看过廖老师的Git教程,但也是草草看完,没有做什么学习笔记。用的少记性也不好,然后到用时又忘记,又要去搜索,很是麻烦耗时,是应该开始系统学习了。这篇文章仅作为自己的Git学习笔记,以备后用。
Git的安装
现在自己主要用的操作系统是Win10,Linux目前只在VirtualBox虚拟机和VPS上用,所以我这里安装使用的Git是Windows版:Git for Windows ,下载.exe文件后默认安装即可。
搜索git打开Git Bash。
使用git前需要设置用户名和e-mail地址,每次提交都会写入这些信息,shell命令行中输入:
1 2 3 |
$ git config --global user.name StarryLeo //用户名 $ git config --global user.email starryskymayuyu@gmail.com //邮箱 $ git config --global core.autocrlf false //禁止换行符转换 |
config –global表示全局使用此参数。检查配置信息:
1 |
$ git config --list |
Git设置默认文本编辑器为gVim(更新)
在Git安装目录/usr/bin建立一个gvim脚本(复制vi一份另存为gvim):
1 2 3 |
#!/bin/sh exec /c/Program\ Files\ \(x86\)/Vim/vim81/gvim "$@" & |
命令结尾的&用于gVim启动后终端阻塞,置于后台运行。中间的路径改为你的gvim路径,然后Git Bash设置:
1 |
$ git config --global core.editor gvim |
以后可以使用命令gvim来调用gVim编辑文件。
Repository的创建和基本操作
创建
repository意为版本仓库,创建项目目录(工作区)并进入,使用git管理项目版本:
1 2 3 |
$ mkdir learngit $ cd learngit $ git init //让Git管理项目版本 |
注意
.git目录是git用来跟踪管理版本库的,没事不要手动修改!!Git Bare Repository:仅包含 .git 目录,不包含其管理的文件,可用作 dotfiles 管理[1][2][3][4]。
添加、提交文件到仓库
我的Win10之前已经安装vim,所以这里我用vim编辑:
1 |
$ vim readme.txt |
命令git add添加(到暂存区):
1 |
$ git add readme.txt |
命令git commit提交(到当前分支),-m参数后可写本次提交的简要说明:
1 |
$ git commit -m "wrote a readme file" |
可以多次add文件,可以一次commit多个文件。
仓库状态概览
vim继续修改readme.txt内容,命令git status查询仓库状态:
1 |
$ git status |
命令git diff查看被更改文件的不同:
1 |
$ git diff readme.txt |
确认修改后添加,提交文件:
1 2 3 4 |
$ git add readme.txt $ git status $ git commit -m "add distributed" $ git status |
版本回退
vim继续修改readme.txt内容:
目前项目有三个历史版本,命令git log可查:
1 |
$ git log |
每次commit提交相当于做一个“快照”,长串为commit_id(版本号),每次commit通过SHA-1计算。指针HEAD指向当前版本,上一版本为HEAD^,上上一版本为HEAD^^。
命令git reset回退版本:
1 2 |
$ git reset --hard HEAD^ $ git log |
命令git reflog可查历史命令,根据commit_id能回到未来(误删)一定时间内的版本[5]:
1 2 |
$ git reflog $ git reset --hard 6e14088 |
工作区修改的管理
工作区的文件修改没有add(到暂存区),使用命令git status可以知道,通过命令git checkout — <file>可以丢弃工作区的文件修改:
1 2 |
$ git status $ git checkout -- readme.txt |
工作区的文件修改已经add(到暂存区),同样使用命令git status可以知道,文件没有提交(到当前分支),通过命令git reset HEAD <file>将被暂存的文件修改重新放回工作区,然后再按前一种情况丢弃修改:
1 2 3 4 |
$ git reset HEAD readme.txt $ git status $ git checkout -- readme.txt $ git status |
commit撤销,保留修改(更新)
工作区的文件修改已经 commit ,需要撤销 commit 并撤销 add 但是保留工作区的文件修改:
1 |
$ git reset HEAD^ |
若仅撤销 commit 不撤销 add 但是保留工作区的文件修改:
1 |
$ git reset --soft HEAD^ |
远程仓库
创建添加SSH Key
本地Git仓库与远程GitHub仓库(免费但自己项目公开)可以通过SSH协议加密传输,所以我们需要创建SSH Key,确认当前用户没有创建过之后,通过在Git Bash输入以下命令创建:
1 |
ssh-keygen -t rsa -C starryskymayuyu@gmail.com |
把邮箱换成自己的,无需设密码,一路默认回车即可。成功后在用户主目录下有.ssh目录生成,里面的id_rsa和id_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了。
本地仓库推送远程
打开你的GitHub账户首页,新建远程仓库,Repository name填learngit,其他默认,即可建立一个空仓库。
根据 GitHub的提示,我们选择关联本地Git仓库,将本地仓库内容推送至远程仓库,在本地learngit仓库中输入命令:
1 2 |
$ cd learngit $ git remote add origin git@github.com:StarryLeo/learngit.git |
注意上面要填你自己的GitHub账户名,Git默认的远程库名为origin,然后将本地仓库内容推送至远程仓库:
1 |
$ git push -u origin master |
出现SSH指纹验证警告输入yes即可,不放心可比对GitHub的指纹信息,推送成功后今后本地做出更改,可通过以下命令推送至GitHub:
1 |
$ git push origin master |
push时需要登陆GitHub的解决办法(更新)
之前我们在机器上做了添加SSH Key的操作,但之后如果用了https协议push,可能会出现需要登陆GitHub的状况,使用git remote -v可查看是否为https
1 |
$ git remote -v |
如是https的关联,可先移除在添加SSH协议的关联,这是或许就是SSH Key的方便之处吧
1 2 |
$ git remote rm origin $ git remote add origin |
然后愉快的push吧
远程仓库克隆至本地
在GitHub创建新仓库,仓库名为gitskills。
GitHub会帮我们建立一个README.md文件。
现在,让我们克隆远程仓库到本地仓库吧,打开Git Bash,输入命令:
1 |
$ git clone git@github.com:StarryLeo/gitskills.git |
clone指定分支(更新)
clone时使用参数-b可以clone指定分支
1 |
$ git clone -b <branchname> git@github.com:StarryLeo/gitskills.git |
发表评论