Git是分布式版本控制系统,可以记录文本文件的不同版本内容,便于恢复和管理。由于是分布式,每台主机都可以有一个仓库,不是必须联网才能操作。
一、安装Git
我使用的是ubuntu和windows10这两个系统,对于ubuntu,直接执行git命令,如果没有这个命令就执行:
sudo apt install git
而对于windows10,有两种方法。
1、git for windows(这个对于windows应该都有的,虽然不知道远古版本是否支持了)
到官网 https://gitforwindows.org/ 下载然后安装就好了,然后鼠标右键就能看到git bash了。这个有一个好处,就是可以使用windows上面一些集成了Git的编辑器,比如VScode~~~这玩意儿用着是真舒服啊,哈哈~~
2、windows10的ubuntu子系统(仅限win10)
这个有点麻烦,但可以感受一下。从Microsoft Store搜索ubuntu,然后就可以找到ubuntu 18.04或者ubuntu 16.04了,随便安装一个。然后勾上下面那个适用于Linux的windows子系统,找不到windows功能就直接在开始菜单旁边的搜索框搜索就好。然后打开安装好的ubuntu,等待它初始化,就可以像使用ubuntu一样使用它了。子系统对于虚拟机,有一个好处,就是可以直接从它访问windows下的文件,也就是说你可以在windows下修改,在linux下访问。想要在该子系统下访问windows的话,直接cd /mnt就行了,windows所有文件都在那儿。/mnt/c就是C盘,/mnt/d就是D盘,以此类推。
二、确认身份
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
这样就给本地仓库弄了一个所有者,表示这个仓库的所有者是谁,邮箱是啥。
三、创建仓库
在需要创建仓库的目录(学习git建议新建一个空目录)下:
git init
就创建了一个仓库,仓库里多了一个.git目录,这里面的东西就别瞎修改了,可能会毁掉整个仓库。
然后创建文件a、b、c写一些内容,然后加入仓库:
git add a b c
git commit -m "这次commit修改了的东西,建议写一个"
每一次修改内容,只有在add、commit后仓库里面的内容才会被修改。add将修改加入暂存区(stage / index)里面,commit将修改从暂存区转移到仓库里,并清空暂存区,生成一个新的版本号。
顺便一提,删除文件:
git rm 文件名
git commit -m "删除了一个文件"
查看仓库当前状态(比如修改了哪些文件,但没有commit):
git status
查看那些文件到底是修改了哪些地方:
git diff //检查的是工作区与暂存区的差异【没add之前】,也就是查看修改了哪些
另外还有:
git diff commit_id_1 commit_id_2 //用来比较2个commit之间区别
git diff --staged //暂存区与仓库的差异【add之后,commit之前】
git diff HEAD -- file //比较的是工作区中的文件与版本库中文件的差异
修改并add、commit了很多次,每次都是一个新的版本,查看历史修改纪录,显示从最近到最远的提交日志:
git log
每次输出commit id(版本号)、修改人、修改时间以及修改的内容,修改的内容就是commit时写的。输出如下:
或者输入命令:
git log --pretty=oneline
或者
git log --oneline
输出如下,略简洁:
四、版本回退
git reset --hard 版本号
其中版本号可以用HEAD表示当前版本,HEAD^表示上一个版本 ,HEAD^^表示上上个版本,HEAD~100表示往上100个版本。
如果版本回退之后又后悔了怎么办——只要知道之前的版本号就可以了。实际上这里的版本号不需要写全,只需要写前几位就好,当然不能太短,否则会有冲突。问题是不知道版本号怎么办?可以使用命令:
git reflog
就可以查看历史命令,找到你要回到的那一次commit,行首就是版本号
有时候只是想撤销某些文件的修改而不需要版本回退:
git checkout -- 文件名
//文件回到最后一次git rm、add或者commit时的状态(这仨哪个时间最近回到哪个,也就是说使用git删除了文件只能使用版本回退找回文件(直接rm,而不是git rm的可以使用checkout找回)
五、远程仓库(使用github)
1、将Github和本地关联
cd打开主目录, ls -a查看主目录下有没有.ssh目录,没有,就执行(windows下也使用git bash进行一样的操作)
cd
ssh-keygen -t rsa -C "email@example.com"
然后就应该有了.ssh目录,然后复制.ssh目录下的id_rsa.pub(公钥)里面的文本内容,然后粘贴到github里,title随意
2、本地仓库推送到Github上
在github上新建一个仓库:
然后在本地仓库目录下执行以下命令,将本地仓库与远程仓库关联,推荐使用第一个命令,第一条命令使用ssh协议,第二条使用https协议,对于git而言,ssh对其支持最好,速度最快
git remote add origin git@github.com:用户名/仓库名.git
或者
git remote add origin https://github.com:用户名/仓库名.git
然后执行:
git push -u origin master
第一次push需要-u(将本地master分支和远程master分支关联),后面就不需要了。第一次push可能会有ssh警告,直接yes即可。
3、远程仓库clone到本地
git clone git@github.com/用户名/仓库名.git
或者
git clone https://github.com/用户名/仓库名.git
这俩和上面remote的时候一样,推荐用第一个