linux之父linus为了更好的管理他自己的开源项目linux系统而自己开发的一个软件,这个软件可以帮助Linux更好的进行开源开发,名字就叫Git。
首先要搞清楚Git的本地仓库和远程仓库,以及本地仓库如何关联远程仓库和上传
关系如下(手工画的,丑了点,意思差不多就这样)
在Windows上使用Git,可以从Git官网(直接百度Git,第一个就是了,速度贼慢那个)直接下载安装程序(如果太慢可以找国内网站的安装包),然后无脑next就行。安装完成,鼠标右键就看到Git GUI Here和Git Base Here两个选项,说明安装成功。
安装成功后,我们得告诉Git我们的名字(昵称就行)和邮箱。这里建议直接设置全局属性,以后方便。
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
输入完你不会看到任何反应,就很对,有反应基本都是报错。
你也可以不输入内容 直接执行上面的命令,可以查看你已经保存的name和email。
$ git config --global user.name
$ git config --global user.email
这样Git就知道你了,可以开始使用Git了。
首先进入你要上传的项目文件夹或者即将开始的项目文件夹,右键Git Base Here,输入
git init
这样你的项目就初始化成一个仓库,这样Git才可以管理你的项目
当你对本地代码文件进行修改后,需要将修改后的文件的修改告诉Git,只是告诉,这样Git会只将修改的文件提交至Stage区(暂存区),并不更新至master区,参考上图第一个箭头,至于为什么不直接提交至master区(主分支,还有其他分支),下面再说明。你需要使用
git add files //files是你修改的文件名字 这样会告诉Git这个文件被你修改了
git add . //注意这里有个 '.' ,这个'.'代表该目录所有文件
//这样会告诉Git,你自己去找这个目录我修改过的所有文件
//Git就会知道哪些文件你做出修改
当你告诉Git你修改后,master区还没更新,你需要自己确认是否将Stage区的修改提交至master区。参考上图第二个箭头。输入
git commit -m 'msg' //这里的msg可以随便写,建议写上你改了什么东西,方便以后查看
如果你有玩过RPG游戏,你就会感到很熟悉,git commit就类似于RPG中的存档,msg就是存档名,每次提交都会保存一个存档,这个存档有唯一的标识commit_id,就是存档编号。在RPG中,你想起某个道具没拿,但却回不去时,你可以选择读档。在编辑代码时,你发现一个bug,你可以读取前面没有bug的存档。至于怎么读取存档,后面介绍。
你可以在任意时刻查看你修改了什么,输入
git status
这样就可以看到哪些文件作出修改,然后Git会提示是否上传或其他操作。
在你修改一个文件后,git status 会告诉你做出修改,你git add后,git status会告诉你可以commit,如果此时你又修改了这个文件,但不执行 git add,直接执行git commit,可以提交,但是git status还是会告诉你那个文件被修改。原因很简单,如最上面那个图所示,你每次commit只是将Stage区的修改更新至master,你没有git add的不会更新。怎么提交第二次修改呢?所以正确做法是,再次 git add,再执行git commit。或者第一次修改不执行git add,第二次再执行 git add,接着执行git commit。
在git status中,你可以看到哪些文件作出修改,但是无法看到具体内容的修改,这时,可以使用
git diff files //files是目标文件的名字
git diff . //注意这个.表示所有文件
这样就可以看到哪些文件作出修改的内容
在每次提交git commit后,都会有一条历史记录,你可以输入
git log //详细列表
git log --pretty=oneline //简易列表
把所有历史记录根据时间从近到远罗列出来,列表内容有commit_id,Author,Date,msg。你可以找到你每次操作的内容和时间,以及关键的commit_id,你可以根据这个commit_id做些大事情。
当你对一个项目作出多次更改后,每次提交都是一个版本,每个版本都有一个版本编号,没错,就是commit_id。当你提交很多次后,你突然发现,后面的几次提交都是bug,这时,Git提供了一个指令,可以让你回到之前的某一次提交状态,输入
git reset --hard commit_id
这样你工作区的代码就会退回对应的版本。除了commit_id外,你还可输入
git reset --hard HEAD^ //上个版本
git reset --hard HEAD^^ //上上个版本
git reset --hard HEAD~100 //上100个版本
git reset --hard HEAD~x //上x个版本
在编码过程中,你更新了多个版本,在一次更新中,你发现前面一个版本有个BUG,于是你用git reset返回到之前的版本,第二天,你发现那个BUG其实并不用退版本,只需要加个依赖库就完全可以搞定。这时,你用git log想去找commit_id,却发现找不到了。
当你退回之前的版本后,如果不关闭命令行,你使用git log是可以看到该版本后的操作记录。
当你退回之前的版本后,你把命令行关闭后再打开,你使用git log是看不到该版本后的操作,这时你就可以输入
git reflog
可以查看所有分支的所有操作记录(分支后面再讲,包括已经被删除的 commit 记录和 reset 的操作),每条记录都有commit_id,这时你就又可以跳转版本了。
当你修改一个文件内容后,输入git status,你可以看到修改的内容,如果你把修改撤销了,再输入git status,git还是会告诉你修改了这个文件,还会提示你(use “git checkout – …” to discard changes in working directory),就是让你使用
git checkout -- files //注意添加 -- 不然命令就不对了
这样git status就不会提示修改了。git checkout会让文件退回最近一次的git add或者git commit(原理是将master的文件替换工作区的文件)。
当你把工作区某个文件删除后,git status会提示有文件被删除,但git本地仓库还留有那个文件,你可以选择撤销本地文件的删除或者删除本地仓库的该文件。
git checkout -- files //误删撤销
git rm files //删除仓库文件
在国内,目前来说,最常用的远程仓库主要有GitHub和码云(Gitee)。GitHub是全球最大IT同性交友网,emmm,开玩笑的,但GitHub的的确确是全球最大的远程仓库。码云是国内的,好处就是不用翻译,但用户肯定没GitHub多,毕竟IT同性交友网。
这里我主要介绍下GitHub的远程仓库的使用。
既然要使用GitHub,自然免不了注册登录,前往GitHub官网,看不懂鼠标右键,翻译。然后注册就完事了。
注册登录搞定后,你就可以看到你的主页了。Ok,然后建个远程仓库。找到右上角,如图
这个是你的仓库入口。点击绿的发慌的new按钮,参考下图开始创建你的远程仓库。
点击Create respository 即可创建。
这就是建立好的远程仓库,啥都没有,只有GitHub的提示,按照红圈的命令把本地内容推送。接下来要做的就是把你本地仓库上传到这里(专业名词叫推送)。在推送前,我们要配置下本地和远程的关联。
本地仓库是通过SSH KEY和GItHub进行滴血认亲的。也可以说是把钥匙,你可以在本地打一把锁和钥匙,把锁给GitHub,关联就用钥匙。
随便找个地方右键Git Base Here打开Git窗口
ssh-keygen -t rsa -C "你的邮箱"
然后会让你填写些内容,第一个是存放钥匙的地方,默认(一般默认地址是C:\Users\win 10.ssh)就OK了,下面是用户名(这个可能不需要输入,Git不认识你的时候需要)和密码以及确认密码,输入密码是没反应的,不是键盘坏了,你直接按密码就对了,再次确认密码没问题就会有下图
SSH KEY配置搞定 前往C:\Users\win 10.ssh,你可以看到两个文件,一个私有的,一个公有的,记事本打开结尾为pub的,复制所有内容。
然后打开GitHub,点击头像,setting,SSH and GPG keys,新建SSH KEY,将第一行填使用者(一个项目有很多组员,GitHub配了很多个门,每个门都有一把锁,这里填上开门的人的名字,方便管理),下面将复制的内容粘贴上去
点击添加会让你输入github的密码确认是否本人操作。按着做就可以添加了。
这就是生成的SSH KEY。这样GitHub就跟你电脑滴血认亲了。
首先是关联,按照GitHub提示的操作,然后在项目文件夹,Git Base Here
git remote add 远程仓库名 仓库地址.git //后面是你的仓库地址结尾加个.git
//远程仓库名不一定用你的仓库名,一般用GitHub,Gitee
//就明白了这是GitHub/码云的一个远程仓库
回车没反应就妥了。
如果有反应,一般是已经你已经用过这个仓库名
可以输入下面指令,查看当前已经关联的远程仓库
git remote -v
删除你不想关联的仓库
git remote rm 远程仓库名
出错的删除后再关联就ok了。然后就可以愉快的推送了。
git push 远程仓库名 master //这里还没说明分支,有空再讲分支,但目前来说只有
//master这一分支,所以把master推送上去就ok了
这样你的项目就开始往github上推送了。推送完成你就可以愉快的在GitHub上看到你的项目了。
以后项目每次改动结束,就输入
git add . //有个点 表示所有
//上传修改
git commit -m "msg"
//提交修改到分支(如果没有分支,就是master分支)
git push 远程仓库名 master
//将分支推送至远程仓库
1、打开项目文件夹,初始化
git init
2、提交所有修改
git add .
3、上传修改到master分支
git commit -m "commit"
4、创建远程仓库,往上翻2.2
5、配置SSH KEY,往上翻2.4
6、关联本地与远程仓库
git remote add 远程仓库名 仓库地址.git
7.推送
git push 远程仓库名 master