git与github(总结,非教程,基于Bash而非GUI)
为了清楚方便,把两者分开。其实如果不需要分工协作的话,单单Git就可以满足个人工作需要,然后在GitHub上学习开源的项目。当然有项目需要多人分工,需要两者结合使用。
Git
- 下载客户端,安装
- 在本地某盘新建文件夹,文件夹内,右键“Git ”Bash Here",出现一个终端窗口。输入"git init"命令把文件夹变成repository。repository(仓库)里所有文件每个文件的修改、删除,Git都能跟踪其历史,并进行还原等。
- 在添加文件后,后者对里面某个文件更改后,右键“Git ”Bash Here",输入"git add 文件名+格式"或者"git add ."(全部文件),把工作区(目录)的改变加到缓存区,然后“git commit -m ”此次改动的描述”,把改变提交,现在本地Git将本次变动记录。
- “git status ”随时查看状态工作区状态。“git diff”查看工作区改变的内容,即未提交前。
- 1.假如工作区内容经历了几个版本改动后,发现错了,需要回退到某个旧版本。"git log --pretty=oneline"显示离当前版本从近到远的提交版本,然后“git reset --hard HEAD”表示回退到上一旧版本,个数表示往前几次。或者“git reset --hard 版本号”
2.假如回退到旧版本后想再回到最新版本,此时再用刚才命令没有用。此时“git reflog”显示历史命令,从而可以从命令中得到版本号,然后reset。 - 撤销修改。命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
1.一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
2.一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。- 总之,就是让这个文件回到最近一次git commit或git add时的状态。
- 删除文件。我们手动删除某个文件后分两种情况
1.误删,此时check out
2.确实要删除。我们需要告诉git确实要删除。那就用命令git rm “00.txt”删掉,并且git commit -m "remove 00.txt"
一般来说上面这些功能基本够用了,更复杂的随查随用即可。
GitHub
-
申请账号。
-
创建SSH Key。开始菜单或者桌面打开“Git Bash”,ssh-keygen -t rsa -C "youremail@example.com",会在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,后面这个文件存储公钥。
-
登录github,,设置,Add SSH Key,填上任意Title,在Key文本框里粘贴公钥。GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
-
github新建仓库,不赘述。
-
将本地仓库与之关联,然后把本地仓库的内容推送到GitHub仓库。在本地仓库,右键,输入 git remote add origin git@github.com:用户名/远程仓库名.git,然后git push -u origin master推送完成。第一次需要加 -u.
-
此后只需要在本地进行改动,add ,commit,然后push到github。分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步。
-
上面讲的是现有本地库,然后将之与github库相关联,然后将本地库内容推送到github。实际上可以先创建远程库,然后进行克隆git clone git@github.com:用户名/远程库.git。然后本地修改再push。
-
GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
分支管理与标签管理。
- 参考链接.
GUI教程
- 参考链接.