清楚我要学什么
之前有过打算学习一下Github,但是仅仅是创建好帐号之后就继续不下去了,一方面是没有编程方面的基础,头脑中没有指令
的概念,还有就是没有一个合适的学习方法,只是在跟着教程敲git,但是不知道这些指令的用途,以及自己能用这些指令做什么。在最近的学习中,我逐渐形成了一个学习套路,就是在学习一个新知识之前,先了解一下这个知识体系的架构,形成一个知识脉络,然后清楚自己想在这方面学习哪方面的知识。
当然,这个思维导图是我学习完成之后才构建的,并非是我在学习之前就想好的,只是在学习中清楚自己需要哪方面的知识,有一个大体的脉络,然后不断的百度百度。
帐号注册
建立仓库
安装就不说了,链接到远程仓库
安装完成之后,新建一个文件夹,鼠标右键,会出现一个 Git Bash Here
点击就可以进行命令操作了
ssh-keygen -t rsa -C "email address"
一路回车就会生成一个id_rsa.pub
cat ~/.ssh/id_rsa.pub
复制到Github
点击头像 ->setting ->SSH and GPG keys ->new SSH key
验证一下
ssh -T git@github.com
设置username和email
git config --global user.name "name"//Github 的名字
git config --global user.email "Email address"//留的邮箱地址
设置、clone仓库
Update 这里应该先在本地初始化再clone的
$ git init
$ git remote add origin https://github.com/logicr/JAVA-study.git
$ git push -u origin master
git remote add origin git@github.com/logicr/test
git clone https://github.com/logicr/test
这样本地就clone了Github上刚刚新建的仓库
提交修改
vim show.md//创建一个md文件叫Show,也可以在本地仓库用记事本写一个
"我叫Jan,正在学习Github"
上传
git add "show.md"
git commit -m "this is a show file"
git push origin master
先看看我的仓库没有提交之前的样子
提交之后,与之前相比,里面多了一个show.md,打开之后,就可以看到我的之前写的自我介绍。
到此,终于算是小有所成能够将本地修改提交到远程仓库里,但是,这只是Github的基本功能。但是在使用中有一些其他需求,比如,我把刚刚刚的show.md删除
删除文件
git rm -r --cached "show.md"
git commit -m "delete show"
git push origin master
再来看看的仓库,看看的show.md,已经被删掉。
不过,Github怎么可能让你轻易删掉文件
版本回退
如果是删除文件
查看日志
git log
这里的语句I delete show
,表示这是我刚刚的删除操所,这时候才显示出 git commit -m "txt"
里面文本的重要性,要不然过几天之后,一堆没有说明的日志文件根本无从查找。复制commit 后面的ID
git reset --hard ID//如果仅仅上前一次的操作可以不用ID,git reset --hard HEAD^
那么现在再将文件提交即可。
如果是会退到之前版本,步骤都一样,先修改一次,在hide.md后面添加一句“我现在修改一次,提交到Github”
git reset --hard ID//如果仅仅上前一次的操作可以不用ID,git reset --hard HEAD^
再push一次
git push origin master
不过会报错,因为文件的add和commit还是之前的,但是不用再次add和commit那么麻烦
git push origin master --force
内容就已经成功回退到上一次的状态。
终于把这些基本操作有所了解,之后再学习一下分支,标签。
在这次学习中参考了资料:菜鸟教程-github简明教程、廖雪峰的官方网站github教程,以及大量网友热心回复等,不再一一列举,这些资料对我的学习带来了巨大帮助,在此感谢。
- 增量更新[3.25]
分支branch
远程删除分支
git push origin :new-branch //$git push [你的远程仓库在本地的别名][空格][冒号][你的分支名字]
本地创建分支
git checkout -b branch-name//
git branch branch-name //创建分支
git cheackout branch-name//切换分支
git merge master //合并
git branch -d branch-name//删除分支
gitHub远程分支创建
//在本地master上分出一个项目分支
git checkout -b new-branch
//git checkout -b new-branchorigin/master //在远程添加分支,尝试添加,失败。
$git push origin :new-branch//删除远程分支
git push origin new-branch:new-branch //本地修改推送到远程分支
- 增量更新[3.26]
文件恢复(不是滚回)
在今天的练习代码中,不小心将master中的一个代码实例给覆盖了(等同于删除!!!),首先想到的当然是git reset --hard ........
,不过很不幸,提示文件错误
当然还有一个方法,因为我之前已经同步过了,可以git clone
不过,这个我就当作最后的手段吧,能不用就不用,毕竟为了恢复一个文件而去撬动整个仓库还是很大费周章的。不能clone仓库的话,问题就来了,百度之后开始各种骚操作,然和并无什么行之有效的方法,倒是强行学习了一波指令
git pull//远程同步到本地
git fetch origin master:new//获取远程master分支后作为本地new分支
最后在一个犄角旮旯找到一篇帖子,问题更我的简直一模一样,连覆盖的文件都是.java,–>原帖地址
为了复现我遇到的问题,我创建一个文件:
$ vim 猫.cat
$ i am cat
$ git add "猫.cat"
$ git commit -m "add a cat"
$ git push origin master
删掉它
$ rm 猫.cat//图示的 $ rm 猫* 这种方法不值得提倡,我要改掉
$ git status //看一看
$ ls //还是不放心,再看看
恢复它
$ git checkout //查看被删的文件
D "day3-26/\347\214\253.cat"
$ git checkout 253.cat //说的是这个那我就试试吧
error: pathspec '253.cat' did not match any file(s) known to git.//......
$ git checkout 猫.cat
error: unable to stat just-written file day3-26/猫.cat: No such file or directory
//没有???
$ ls //明明就回来了,真是皮。
不知不觉又学会了一招,在问题中新学习知识真是一种很有效的方法,不仅解决了自己的问题,还能学习知识,不过不好的一点是往往也随之带来了血与泪的代价,这一次用事实就告诉了我不要再master里瞎搞,也就是说建立分支branch的作用也就凸显出来了,不过昨天才学branch,今天没想起来建立一个branch,不过学习就是这样,你学了不用,自然有错误来提醒你去用。