创建本地git仓库
在windows下使用git命令行模式。
mkdir test #创建文件夹
cd test #进入该文件夹
git init #将该文件夹变成可以通过git管理的仓库,这时,在test文件夹下会创建一个.git的隐藏目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
然后我们的代码项目就必须在test文件夹内。我们在test文件夹下创建一个文件1.txt,内容为如下:
提交文件到本地仓库
那么,我们如何将1.txt文件提交到仓库呢?
git add . #将当前文件夹内的所有文件添加到Git仓库,如果只想添加一个文件,则git add 1.txt
git commit -m "注释" #告诉Git,将文件提交到仓库,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
git commit成功之后,会有提示,多少个file changed改动,多少个insertions插入等等。如下
为什么Git添加文件需要add
,commit
一共两步呢?因为commit
可以一次提交很多文件,所以你可以多次add
不同的文件,比如:
git add file1.txt
git add file2.txt file3.txt
git commit -m "add 3 files."
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支。所以,现在,git commit
就是往master
分支上提交更改。你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
版本回退
git log ,该命令显示从最近到最远的提交日志,如下图可以看到3次历史记录。
那么我们怎么回退呢?首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD
表示当前版本,也就是最新的提交cbfdd0.....,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
我们现在回退到上上一个版本,也就是第一个版本!
git reset --hard HEAD^^
那如果我现在发现回退错了,又想回到刚刚的版本怎么操作?只要我们刚刚的那个窗口没关闭,我们找到刚刚的ID值,就可以回退过去了。
git reset --hard cbfdd0cb415b8a4c72161289f8ce110958438c2a
文件删除
将如我们要将仓库的文件删除,那该怎么办?我们先可以直接在文件夹里面将文件删除,然后 git status 查看状态
这里状态显示我们删除了一个文件
但是仓库里并没有删除,我们还需要在仓库里删除
git rm 1.txt
git commit -m "删除了文件"
Git密钥生成及Github设置
本地 Git 仓库 和 github 仓库要通过SSH加密才能传输,所以需要让github认证本地的SSH Key。
认证之前,则先使用Git生成SSH Key。
进入如下目录:C:\Users\用户名\.ssh ,在该目录下使用命令创建公私钥
ssh-keygen -t rsa -C "xx@xx.com" #这里的邮箱是你的github登录邮箱
然后会在C:\Users\用户名\.ssh 目录下生成公钥文件 id_rsa.pub 和 私钥文件 id_rsa
然后我们进入github的settings里,点击 SSH and GPG keys ,然后 New SSH key,将id_rsa.pub里的内容复制进去即可。
验证是否配置成功
ssh -T git@github.com
向Github仓库提交数据
进入某个仓库下面: git remote add origin git@github.com:xie1997/test
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
当Github上的仓库是空的,我们第一次将本地文件提交到Github上的话,我们需要使用 -u 参数,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来
git push -u origin master
如果不是第一次操作的话,我们就不用 -u 参数了!
git push origin master
git pull --rebase origin 将远程仓库和本地仓库同步
从Github库克隆数据
克隆Github的test仓库到本地: git clone git@github.com:xie1997/test