简单本地建立GIT仓库并关联远程仓库

本文详细介绍如何在Windows系统上使用Git进行版本控制,包括本地仓库的建立、文件的提交及版本回退等基本操作,并介绍了如何搭建远程仓库以及通过SSH密钥进行安全连接。

简易使用本地建立GIT仓库并关联远程仓库

建立本地仓库

文章中我自己是使用的gitee,github同理

windows系统下载GIT,点这
这是淘宝的镜像源,git官网上直接下载国内很慢很慢,看另一位博主说国内裸连git官网下载好像没成功过
点进去之后下拉,安装个时间和现在差不多的(eg:我选的2.29版本)
安装的时候记得勾选上在右键菜单中创建GIT BASH HERE否则用起来好麻烦

下载好之后找个空地然后右键->GIT BASH HERE
打开GIT BASH窗口,输入
git config --global user.name"你的名字"
git config --global user.email "你的邮箱"
(配置的时候使用了–global参数,这个参数使得这台电脑上的git仓库都是用这个配置)
两个输入完成之后回车都不会有提示,因为unix的设计哲学:没有消息就是好消息
建立一个空的文件夹(作为仓库),输入git init完成仓库初始化
这个文件夹里面或出现一个隐藏的文件夹.git 这个文件夹里面放着的是git管理文件修改所用到的数据,不要轻易修改删除
注:GIT只能跟踪文本文件的修改,git的原理大概是每次都会读取文本文件,对比和之前的修改并记录下来,这样才能在 git diff中查看修改了什么.如果是二进制文件则git没办法读取出来文件中修改了什么,word文档使用二进制文件存储的,如果非要用git来版本控制也可以只不过需要在commit的时候写详细每次更改了啥(以上都是我瞎猜的,还没验证过,不过git确实只能读取文本文件修改了啥)不要用windows自带的记事本编辑文件,记事本会在文件开头加上其他字符,导致出问题
在目前这个仓库里面我们也可以随意提交修改文件然后一键还原了
比如我们创建一个文件 test.c,然后向里面写入如下内容:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){
    ;
}

写完保存,使用git status命令可以查看当前目录里面文件的状态
使用之后控制台输出了

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        test.c

nothing added to commit but untracked files present (use "git add" to track)

提示我们当前仓库里面有一个文件还没有被提交过
我们输入git add test.c,回车
提示了

warning: LF will be replaced by CRLF in test.c.
The file will have its original line endings in your working directory

不要担心,这是因为linux系统和windows系统关于文件换行符使用的不一样
我们使用的git bash实际上驶在windows上模拟linux中的终端,所以会报一个warning
然后输入git commit -m "first commit"回车
控制台输出了

$ git commit -m"first commit"
[master (root-commit) 4bc0b44] first commit
 1 file changed, 7 insertions(+)
 create mode 100644 test.c

告诉我们这个文件已经被提交了
现在我们再用git status命令查看文件状态

On branch master
nothing to commit, working tree clean

已经没有需要提交的文件了.
我们现在已经将修改过的文件存到了版本库里面
如果需要将现在的文件恢复到版本库中的某一个版本

git的存储系统

我们平常用的这个文件夹叫做工作区,最终文件存储的地方是版本库,在版本库里面我们的每次修改都是以时间线的形式来保存的.除了这两个地方还有个叫做暂存区的地方.我们每次修改完文件之后,改动没有被添加到暂存区和版本库里面,如果这时候我们使用git status命令查看会发现提示

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   test.c

no changes added to commit (use "git add" and/or "git commit -a")

有一个文件被修改了但是还没有提交到版本库里面
我们git add一下试试看

$ git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   test.c

嗯,输出少了一行
但是还是提示说改动需要提交
提交之后再查看文件状态

$ git status
On branch master
nothing to commit, working tree clean

已经没有修改过但是还没有提交的文件了,所以working tree就是clean的了
那如果我们先修改一个文件,add一下,再修改,再commit,会发生什么呢?
test.c文件中现在有的内容

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){
    int i=0;
    printf("%d\n",i);
}

我们在最后再添加一行

printf("test\n");

然后add一下再修改它,将刚才字符串里面的一个test改成两个test
然后再commit,那么要怎么查看版本库里面的文件呢?
git checkout -- 文件名
这个命令是使工作区的文件恢复到最近一次的add或者commit的版本,不管工作区的文件发生了什么都可以恢复,至于如何恢复到上上次或者上上上此提交的版本我们后面再说
使用上述命令之后我们查看test.c,发现已经变成了

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(){
    int i=0;
    printf("%d\n",i);
    printf("test\n");
}

我们先是添加了一句printf("test\n");然后add,再将这一句中的"test"改成了"testtest"再commit,但是现在我们发现版本库里面的版本使第一次修改的版本,也就是说:我们add文件只是将文件添加到了暂存区,commit是将暂存区的文件添加到版本库里面,我们每次add文件都会将工作区新的修改覆盖到暂存区对应的文件上

我们现在已经可以将写好的文件保存到版本库里面了,那如果我们想将版本回退到之前的版本要怎样做呢?

回滚版本的方法有很多,在这里我们只说一个比较通用的方法:
使用git reflog命令,然后控制台输出了我们更改过的历史版本信息

$ git reflog
41c2123 (HEAD -> master) HEAD@{0}: commit: test adding chinese
a95e281 HEAD@{1}: reset: moving to a95e
1b919ba HEAD@{2}: commit: add testtest
a95e281 HEAD@{3}: commit: add .docx file
6a85ca9 HEAD@{4}: commit: third change
29a2a2a HEAD@{5}: commit: second change
001c48c HEAD@{6}: reset: moving to 001c
cd59362 HEAD@{7}: commit: change i from 0 into 1
93cb4c5 HEAD@{8}: commit: add printf
001c48c HEAD@{9}: commit: add int i
4bc0b44 HEAD@{10}: commit (initial): first commit

第一行的开头有个(HEAD -> master),这个HEAD指的就是我们的版本是哪一个,而后面这个master是另一个概念:分支,但是我也是刚接触git,还只是使用默认的master分支,不是很了解,就不做过多介绍,可自行百度.
上面控制台输出的每一行开头的十六进制数字是版本号,使用SHA1算法计算出来的(貌似,记不清了),比如我们需要将版本恢复到"commit add testtest"版本,则使用命令git reset --hard 版本号回退到想要的版本.版本号不用写的很完整,只要能和别的版本号区别开来就可以使用了

到现在我们已经可以将修改好的文件保存到版本库里面并且随时回退版本了

建立远程仓库

笔者使用的是国内的码云
官网注册账号之后,点击右上角头像旁边的加号
点击新建仓库

填好仓库名称啥的
在这里插入图片描述
在这里插入图片描述
我一般不选择.gitignore模板,也没啥影响,对我来说够用了,下面的分支模型是选择仓库创建完成之后的分支形状,关于分支请自行百度. 最后点击创建

在这里插入图片描述
然后会进入这个界面
在这里插入图片描述

到这里我们已经创建好了远程仓库,但是如果想在本地轻轻松松将代码push上去还需要生成一个我们自己的SSH KEY
打开git bash,输入$ ssh-keygen -t rsa -C "你的邮箱地址",然后就会在主目录下生成一个.ssh文件夹,里面就存放着我们的ssh私匙和公匙,我们直接在git bash中cd ~然后再cd .ssh就可以进入.ssh文件夹了,里面有id_rsa和id_rsa.pub两个文件,带.pub后缀的是公匙,我们需要将这个文件里买你的内容复制下来,这个文件可以使用vim打开也可以使用pwd命令查看当前路径然后在windows文件管理器中打开都可以,复制下来之后打开我们的gitee个人管理
在这里插入图片描述
点击头像下面的个人设置
在这里插入图片描述
再点击安全设置中的第一项SSH公匙,将复制的.pub文件里面的内容粘贴到这里然后点击确定,就将我们的电脑和这个账号关联起来了
然后进入我们的本地仓库文件夹,在git bash中输入git remote add origin git@gitee.com:dalala24/test.git
这个命令是设置这个仓库推送的一个"通道",命令里面的origin是给这个"通道"起的名字,我一现在还只是用gitee当作文件备份的云盘所以基本上每个通道的名字都是origin,方便时间久远之后再推送一个仓库里面的文件,git@gitee.com:dalala24/test.git是要推送到的地址,如果你在你的本地仓库直接输入了我这条命令那你的本地仓库的一个"目的地"就设置成了我的仓库,但是你推送不进来,因为我的账号中没有你的电脑的ssh KEY,我们可以让一个仓库有好几个通道,只需要给这些通道设置上不同的名字和目的地即可,我们可以使用git remote -v命令来查看这个仓库有几个通道和目的地
填写好命令之后回车,不会提示任何东西
这一步只是单纯的设置一个推送的通道和目的地,没有任何检测,后面推送失败就有可能是因为这一步没有弄对,请仔细核对
然后在git bash中输入git push -u origin master,就会把仓库里面的文件都push到gitee的服务器上了(push之前先将工作区里面的文件都commit一遍,push只会push已经commit过的文件)

$ git push -u origin master
Enumerating objects: 18, done.
Counting objects: 100% (18/18), done.
Delta compression using up to 8 threads
Compressing objects: 100% (13/13), done.
Writing objects: 100% (18/18), 10.66 KiB | 840.00 KiB/s, done.
Total 18 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-5.0]
To gitee.com:dalala24/test.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

git push 通道名 master 这个master是分支的名字
如果需要下载,命令则是git pull 通道名 master

现在我们就实现了建立本地版本库和远程版本库并且关联起来实现云端备份

总结(简略版)

  • 从淘宝镜像源下载安装git bash 点这
  • 链接最下面

选择适合自己电脑的版本

(记得设置上添加到右键的菜单里,再安装的时候有这个选项,记得注意看)

  • 找个地方建立一个git仓库(最好是空文件夹,不然里面的文件在每次查看文件状态的时候有些不需要备份的文件都会提示没有提交,看着难受),再将里面的文件都commit一遍,如果有的话
    命令:初始化仓库:git init 将文件添加到暂存区;git add 文件 提交文件:git commit -m "这次提交的注释"(注释是一定要写的)
    关于暂存区之类的解释请点击左侧目录"git的存储系统"查看
  • 将文件恢复到之前的版本:查看更改历史:git reflog 更改版本:git reset --hard id
    这个id是在reflog之后控制台输出的每一行的开头的十六进制数字
  • 创建远程仓库,请点击左侧目录中的建立远程仓库,里面包含了剩下的内容.

本文只是在我个人学习完廖雪峰老师的git教程之后使用费曼学习法加深印象写下的博文,感谢廖老师的教程!很详细!有不懂的都可以在廖老师的教程中找到答案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值