git和github算是必备技能了。可惜我还不会。所以就花了一天时间好好看了看,把网上的资料整理了一下,算是一个入门。
1. 首先你需要知道git里面的文件的状态。关于git里面的文件的状态,http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD/20151013/306433.html
笔记链接:Git 中文件的状态和流转区_博客园
2. 上面的文件的状态可以明白一件事,就是git的分布式的含义。也就是git里面本地就是仓库。add,commit等到都是对本地仓库的操作。根据分布式的原理可以想象,在github这种远程仓库上的操作其实和本地差不多。二者联系就是靠push和pull。如果想要提交远程,直接push即可。然后在服务器上面会有一个分支。
3. 所以不要问git究竟存在哪里了?如果没有连接远程的github上面的账号,肯定是存在本地的。只不过是用格式隐藏起来了。在仓库目录下查看隐藏文件可以找到.git这个文件夹。其他目录则是目前的工作目录。工作目录复制于仓库也就是.git文件。工作目录可以是一个分支,也可以是master,看你怎么用 了。
4. 然后是工具。github有客户端(shell,gui),git也有(cmd,gui,bash),还有tortoisegit。根据目前的经验,在window平台,git 的cmd,tortoisegit即可。
下面的命令主要参考:博客2:http://blog.jobbole.com/78960/
本地笔记链接:推荐!手把手教你使用Git - 文章 - 伯乐在线
5. 命令:
5.1. 安装git,tortoisegit
5.2. 创建一个文件夹。然后进入这个文件夹。git init,这个文件夹下面会出现一个.git的文件(需要显示隐藏文件)。说明创建仓库成功。
5.3. git configure --global user.name "***"
git configure --global user.email "****"
上面是注册用户信息。当你同步仓库和远程时,就会使用这个用户信息,表示是这个用户上传的(这和你在github上的账号密码不是一回事)。global表示全局。也就是这台电脑所有的git仓库都是用这个。当然,你也可以在别的仓库再指定。那样就会覆盖。
5.4. 然后是在主分支或者某一个分支上需要的命令:
git add 文件名:表示提交到快照。
git commit -m "" 表示提交到本地仓库。
git reset –hard 版本号: 回退到某个版本
5.5. 可以发现,Git会告诉你,git checkout — file 可以丢弃工作区的修改,如下命令:
理解工作区与暂存区的区别?
6.命令行参数:
第一种:参数用一横的说明后面的参数是字符形式。
来源: https://segmentfault.com/q/1010000000770497
8. 链接远程库的时候必须先创建空的远程库,不要加readme。不然是不能链接的。有冲突。或者在本地新建空的远程库。
(网上说法:另一种方案:)每次都要输入用户名和密码。如果上传的代码没有README.md,而GitHub上勾选添加了README.md的话,这时需要执行git pull origin master
和git push -u origin master
才能将代码push。
4. github和git@osc使用起来基本上很简单,网上有些文章写的是需要puttygen生成公钥私钥之类的,其实完全用不着,作为public项目简单的用户密码方式就可以了
9. 这样,整个流程就是,在eclipse里面新建一个项目,然后添加到本地仓库,然后在oschina创建一个空的,链接。以后每次都可以在工作区直接做。如果更负责更大的项目,可以再branch
10. .gitignore文件:
就是git软件要忽略的文件列表,如果要忽略某些文件,,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。(当你上传一次文件然后把其中一部分文件删掉会自动出现这个文件)
一些模板:https://github.com/github/gitignore
11. 怎么自动设置用户名和密码不用每次都输入;
git config --global credential.helper store
在进入仓库后的命令行执行上面的命令,这是在C盘的用户里面生成一个帮助文件,会帮你把你上次的用户名和密码记住,这样,每次你只需要一次登录即可。
12. 最后是eclipse上面,目前基本上都是自带git的。可以file->team里面查看有没有git命令。没有的去插件市场再下一个。
13. 至于命令,就和上面一致了。如果是已经git仓库的代码导入进来,在window->prefence里面可以看到你仓库的设置。如果是新建项目,可以先建个仓库,然后把项目建在仓库里面。很方便。
git checkout — readme.txt,如下所示:--很重要,没有就是创建分支。
5.6. 还有一些修改详细参考上面引用的博客2。
5.7. 下面是链接到远程仓库,也参考博客2
5.8. 然后是创建分支。首先有个问题,就是你创建分支之后在本地文件夹里面如何找到这个 分支。其实,当你从一个分支调到另一个分支,你目前所处文件夹下面的文件已经转换为目标分支的文件。而之前的其他版本的文件都在.git里面。总之,需要理解工作区和版本区的区别:
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。
我们前面说过使用Git提交文件到版本库有两步:
第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。
第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。
5.9. 相关命令也要参考博客2
第二种:参数用两横的说明后面的参数是单词形式。
7. HEAD:
你可以认为 HEAD(大写)是"current branch"(当下的分支)。当你用git checkout切换分支的时候,HEAD 修订版本重新指向新的分支。有的时候HEAD会指向一个没有分支名字的修订版本,这种情况叫”detached HEAD“
head(小写)是commit对象的引用,每个head都有一个名字(分支名字或者标签名字等等),但是默认情况下,每个叫master的repository都会有一个head, 一个repository可以包含任意数量的head。在任何时候,只要这个head被选择成为”current head“,那么这个head就成了HEAD,总是大写