工作原理_Github基本概念
仓库Repository
远程仓库Remote: 就是指保存在github网站里的代码;
本地仓库: 本地代码;
缓存区Index: 是准备更新到本地仓库的一个中间阶段
工作区Workspace: 顾名思义
add就是用来建立跟踪,添加文件到缓存区;
commit就是把文件缓存区的文件正式加到本地库中;例:git commit -m "备注"; 必须要-m 添加备注,不然会报错
push就是把本地库更新到远程库中; 例:git push origin master; origin远程仓库名,master是分支
fork: 在github页面,点击fork按钮。将别人的仓库复制一份到自己的仓库。
pull: 在本地有项目的情况下和远程不同步的情况下 使用pull 拉取更新。相当于是从远程获取最新版本并merge到本地。
clone:将github中的仓库克隆到自己本地电脑中。在本地没有项目的时候 使用clone。git clone 就是将其他仓库克隆到本地 ,本地无需git init,直接git clone url
fetch: 在本地已有项目主分支的情况下还想下载项目的其他分支使用fetch。相当于是从远程获取最新到本地,不会自动merge。
merge:
branch 分支
master 只是这个repository中默认创建的第一个branch,就是你默认分支或者叫主分支的名称;
必要的手动操作:
1、在网页上查看远程仓库的地址,到时候git remote add origin URL 会用到,不一定要用origin,也可以用另外的名字。
2、在本地合适的路径下创建一个本地仓库的文件夹,并进入该文件夹输入git init命令进行初始化。
==============创建公钥私钥==========================
SSH服务其实方便用户将本地仓库代码更新到远程仓库上,只需要输入一条指令即可,并不需要繁琐的密码验证。
所以这涉及在本地创建公钥和私钥,并且将公钥发给github网站;
这样以后用本地电脑传代码都不需要手动输入账户密码了。
$ ssh-keygen -t rsa -C "huangyabin001@163.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/STAR/.ssh/id_rsa):
Created directory '/c/Users/STAR/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/STAR/.ssh/id_rsa.
Your public key has been saved in /c/Users/STAR/.ssh/id_rsa.pub.
The key fingerprint is:
xxxxxxx huangyabin001@163.com
回车,使用默认设置就好,无需设置密码。
如果顺利在用户主目录下会看到id_rsa和id_rsa.pub两个文件,其中id_rsa是私钥,不可泄露出去,而id_rsa.pub是公钥,可以公开。
登陆GitHub,打开Account settings,SSH Keys页面,并点击Add SH Key,添加SSH Key,Title可以自由定义,
Key文本框中就是id_rsa.pub文件的内容,直接复制即可。
=================================================
如果远程仓库做了修改,如何更新到本地?
从远程获取最新版本到本地:
1)在本地创建新temp分支的办法,将远程origin仓库的master分支代码下载到本地temp分支:git fetch origin master:temp;
2)接第1步,也可以使用 git fetch origin master;
3)使用命令:git diff temp;用来比较本地代码与刚从远程下载下来的代码的区别;
4)合并temp分支到本地的master分支;git merge temp
5)删除temp分支:git branch -d temp,如果该分支没有merge到本地,那么该分支就会报错,可以添加-d参数来强制删除;
==================================================
标签:
标签的意义:
标签是版本库的一个快照;
例如:遇到需要上周一那个版本,版本号是V1.2,按照v1.2查找commit就行;如果查找commit号的话,一串乱七八糟的数字不好找;
tag是让人容易记住的有意义的名字,它跟某个commit绑定在一起;
标签是和具体一个commit挂钩的,如果这个commit既出现在master分支上,又出现再dev分支上,在这两个分支上都可以看到标签;
操作过程:
切换到需要打标签的分支上:git branch;git checkout <branchname>;
打标签:git tag <name>;
查看标签:git tag;
默认标签是打在最新commit上的。如果忘记打标签的话,找到历史提交的commit id,然后打上;
查看标签的信息:git show <tagename>;
如果标签打错了,可以删除:git tag -d v0.1
因为创建的标签只在本地,不会推送到远程,删除错误的标签比较容易;
如果要推送某个标签到远程,使用命令 git push origin <tagname>;
一次性推送全部尚未推送到远程的本地标签:git push origin --tags;
如果标签已经推送到远程,要删除远程标签的话,就麻烦一些,要先本地删除,再从远程删除,命令也是用push的方法;