本地创建版本库
说是版本库,其实我的理解就是电脑上的文件夹。下面是创建时的常用指令:
功能 | 命令 |
---|---|
创建路径 | mkdir XXX |
进入路径 | cd XXX |
初始化git | git init |
git init会在当前目录下初始化一个.git文件夹,里面包含了git的配置,不要随便修改。
提交文件
对于本地的版本库,可以分为三个部分:工作区、暂存区以及仓库区。其中,工作区就是我们操作的地方,可以对文件进行增删改,如果版本库已经初始化了,那么git就可以查看文件的修改(这里的修改包括增加删除修改)。我们要将自己对文件的修改提交到版本库时,首先需要将修改的文件提交的暂存区,然后再将暂存区中的内容提交到仓库区进行存储。
功能 | 命令 |
---|---|
将工作区内容添加到暂存区 | git add XXX |
将暂存区内容提交到仓库区 | git commit -m “备注信息” |
添加当前路径下的所有文件到暂存区 | git add . |
这里添加所有文件到暂存区,有一个问题,就是如果路径下面有文件夹,就添加不上,得一个一个添加。
关于添加时,还存在一个问题,就是CRLF以及LF的问题
在unix系统中,使用的换行符为换行,即ling feed;在windows中,用的却是回车换行符,即carriage return line feed;在mac系统中,换行是回车符,即carrage return。git在进行添加处理时,会分辨你的文件换行符是哪一种,并进行转换。
在git中,core.autocrlf是git中负责处理line endings的变量,可以设置三个值–true,inout,false
值 | 意义 |
---|---|
true | 添加文件到git仓库时,git将其视为文本文件。他将把crlf变成lf |
false | line-endings将不做转换操作。文本文件保持原来的样子 |
input | git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置 |
查看文件状态
当我们提交之后,需要查看文件的状态,比如文件是否添加到暂存区以及是否已经提交,或者工作区中的文件是否有已修改的。
功能 | 命令 |
---|---|
查看文件状态 | git status |
查看文件有什么变化 | git diff XXX |
版本控制
对于每一次提交,git都会记录一个版本,这样,我们就可以根据自己的需要,回退版本或者更新版本。
功能 | 命令 |
---|---|
显示版本日志 | git log |
显示简略版本日志 | git log --pretty=onelint |
重置版本到版本号(版本号6位,可以根据log查找) | git reset --hard XXX |
重置版本到前一个版本 | git reset --hard head^ |
重置版本到上上个版本 | git reset --hard head^^ |
每一次的命令 | git relog |
我们在重置到前几个版本后,在log中,就不会在显示重置到的版本之后的版本,这时候,就可以用relog找到之前的版本号,然后更新。
撤销修改
我们在编辑代码或者文件时,有时候搞错了,需要将已经添加到暂存区或者是丢弃对工作区内容的需改,这时候就要用到这两个命令。
功能 | 命令 |
---|---|
丢弃工作区修改,只会撤销工作区修改而不影响暂存区 | git checkout – XXX |
将添加到暂存区的修改回退到工作区,如果还需要撤销工作区的修改,则接着用上面这条指令 | git reset head XXX |
远程仓库
世界上有一个最大的远程仓库github,不过好像也可以自己搭一个分布式仓库,这样更安全。不过我刚开始,还是就用github吧,感觉很长一段时间,都够用了。
步骤
- 生成RSA秘钥
在bash中输入指令:ssh-keygen -t rsa -C "youremail@example.com",然后一直使用默认值,点击下一步即可。最后生成的秘钥,会保存在c:\user\XXX.ssh中。 - 将id_rsa.pub中的内容,粘贴到github的中,这样可以让远程库识别到,使用这台电脑的人是你。
settings>SSH and GPG keys>SSH keys - 添加远程库:git remote add origin https://XXX。https中填写自己的库地址。
- 将本地库推送到远程库中:git push -u origin master。-u参数是将本地库与远程库联系起来,第一次推送时需要用,在以后推送时就不需要了。推送时,第一次会要求你登录,输入你git的用户名密码即可。
如果需要克隆,进入你想要clone的路径后,git clone https://XXX即可。