版本控制之GitHub亲手实验总结
使用Git的基本方式是:第一种,在remote端创建一个repository,clone到本地,然后在本地把已有文件添加进来/在本地clone的目录下创建新文件,再add 提交等纳入git版本控制。。第二种,直接在本地项目上,通过IDE相关插件,把整个项目提交到remote的一个库中(一般就为这个项目新建一个repository),从而纳入版本控制。
实践可行的方式(Ps:命令行,只要懂得命令正确使用方式,发现是越用越顺手,越用越爽……):
首先,克隆仓库的命令格式为 git clone [url]
例如: git clone https://github.com/jhtlove/study.git
这会在当前目录下创建一个名为study(自己在GitHub上建立的库的名称)的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录,然后从中取出最新版本的文件拷贝。如果进入这个新建的 study目录,你会看到项目中的所有文件已经在里边了,准备好后续的开发和使用。
如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:
$ git clone git://github.com/schacon/study.git mystudy
唯一的差别就是,现在新建的目录成了 mystudy,其他的都和上边的一样。

上图中,必须进入到含有(隐形文件夹).git文件夹的同一级目录下,才能使用git stash命令。([stæʃ] 存放:经常有这样的事情发生,当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是git stash命令。“‘储藏”“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。你可以重新应用你刚刚实施的储藏,所采用的命令就是之前在原始的 stash 命令的帮助输出里提示的:git stash apply。如果你想应用更早的储藏,你可以通过名字指定它,像这样:git stash apply stash@{2}。如果你不指明,Git 默认使用最近的储藏并尝试应用它:)进入后,命令行显示也会不同,多了一个“(master)”--master分支的显示。

复制本地Java工程文件(贪食蛇)到和.git同一级的文件夹下,

再次查看状态。snake文件夹没有被跟踪,

使用git add . 去添加,再查看状态。

为了避免push时出现的(Non-fast-forward)(出现原因在于:git服务器端的仓库中已经有你现在准备push的本地库中的一部分代码,所以它不允许你直接把你的代码覆盖上去)于是你有2个选择方式:
1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
git push -f
2.每次先从服务器拉取文件到本地,先把git服务器端的东西fetch(取得)到你本地,然后merge后,再push本地的库到服务器:
①git fetch

②git merge

两个操作加起来相当于git pull操作,但是又有区别。例如,如果服务器端有一个文件,如snake文件夹,另一个本地库(StudyRep)下也有一个未跟踪snake文件夹(从workspace中copy的),在StudyRep\study下直接pull会提示必须先merge,如果没有merge,而是进行git add . 操作,把未跟踪的snake文件夹添加进去,再pull,会强制更新本地库中的snake文件。

接着,为了进一步试验pull命令,先直接登录GitHub修改snake下的blood.java文件,然后再pull,执行pull命令后发现本地库中的blood文件确实改变了。接着直接git commit却发现虽然之前有执行git add .命令,但是仍然提示有Untracked files。再git add . 再git commit,再git push 就可以把本地库新增加的工程同步到服务器端。

push之前,先要把changed内容commit到本地库。
直接输入git commit 命令会进入VIM命令行模式,让你输入本次commit内容的一些相关信息。按i(insert)输入;Esc退出编辑,:wq(write and quit)保存退出。

再git push,输入GitHub的用户名和密码,


最后对比服务器端https://github.com/jhtlove/study,发现snake文件夹内容已经同步到服务器端的库了。


要想达到Eclipse中修改了snake代码,又同步到服务器,只需要(如果已有workspa下的snake工程,只需要移除)把testAgain下的git库的snake工程import到Eclipse中,然后修改之后再add + commit + push操作即可(如果有需要可以先fetch+merge)。

.ignore文件的使用
*.class
*.dll
/bin/
#ignore thumbnails created by windows
Thumbs.db
#Ignore files build by Visual Studio
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.cache
*.ilk
*.log
[Bb]in
[Dd]ebug*/
*.lib
*.sbr
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
每次push都要输入用户名和密码,用户名密码的global配置?
附,每次修改提交都要:
git add . (使用git stash 和git status 查看状态,红的不行,绿的就ok了)
git commit
git push
git bash命令行的粘贴不是很好用的话,右击命令行标题栏->属性->选项->快速编辑模式,然后只要右击就可以进行“粘贴”操作。另外使用cd 命令进入某个目录,不能使用反斜杠\,只能使用斜杠/。例如想要进入目录:D:\StudyRep\study,就只能在命令行输入 cd d:/StudyRep/study


为URL取别名,不用每次都输一长串的url

git remote add 后查看.git文件夹下的config文件
[remote "study"]
url = https://github.com/jhtlove/study.git
fetch = +refs/heads/*:refs/remotes/study/*
其余实践注意点:
①ssh-keygen 不要手贱加空格写成:ssh -keygen
②打开,克隆,……:使用克隆比较好建立好本地文件夹与GitHub服务器对应关系,再把自己想要保存的内容放入这个文件夹。
③commit是commit到本机的git库,而push才是同步到github
④其中要使用到GitHub 用户名(jht)和邮箱,登录密码
⑤在Eclipse中使用插件egit很方便,之前用用命令行产生的ssh key,只要在GitHub网站上保存了,取得了本地与GitHub服务器端的连通,在Eclipse中可以不再generate key,使用ignore忽略不想同步的文件。在Git Bash中使用命令 $ ssh -T git@github.com可检测本机与github的连通性。
⑥GIT不会在每一个目录下建立版本控制文件夹,仅在根目录下建立仓库。(svn版本高了,也仅仅在根目录形成 .svn文件)
⑦eclipse中的project也建立git版本控制,当未创建分支,处于NO-HEAD状态,首次提交后,会自动生成master分

⑧Eclipse项目下文件夹中的符号”?”表示此文件夹处于untracked状态,即git没有对此文件进行监控。通过Team -> Add to index可以将文件加入git索引,进行版本监控。也可以通过Team -> Untrack将文件从索引控制中排除。将此次新增的文件commit到仓库中,文件将处于unmodified状态,或者说,这就是一种staged状态。然后修改文件的内容,文件将处于modified状态。
⑨将不需要版本控制的文件,使用gitignore文件过滤掉:打开Navigator窗口,在project根目录中的.gitignore文件中,将需要排除控制的目录写入.gitignore文件中。
十、Team -> Show in history可以查看版本历史提交记录。
Git文档:取得项目的-Git-仓库
版本控制之GitHub亲手实验总结的更多相关文章
- 如何用Github版本控制非Github库
Git的图形化客户端有很多,不同的人可能习惯用不同的客户端.本人更习惯于Github的客户端,因为上Github比较多,同步代码到Github用官方的客户端是最方便的,所以也就更习惯于使用Github ...
- Git版本控制:Github的使用之 多人协作及参与项目
版权声明:本文为博主皮皮http://blog.csdn.net/pipisorry原创文章,未经博主允许不得转载. 目录(?)[-] Git多人协作 从远程库克隆 使用GitHub参与开源项目- ...
- 版本控制之GitHub — — 第一步的理解
GitHub是时下最流行的版本控制的一门“技术”,此之前svn(subversion)也是同样的作用. 至于版本控制:Git是分布式的,而svn是中心式的(或者叫集中式的)版本控制系统,这是两者之间理 ...
- samba共享服务器搭建 亲手实验
一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...
- 【Git版本控制】GitHub上fork项目和clone项目的区别
fork:在github页面,点击fork按钮,将别人的仓库复制一份到自己的仓库. clone:直接将github中的仓库克隆到自己本地电脑中 问题1:pull request的作用 比如在仓库的主人 ...
- 201871010109-胡欢欢-实验一-软件工程的准备(初识github及《现代软件工程-构建之法》)
项目 内容 课程班级博客链接 2021年春软件工程课程班(2018级计算机科学与技术) 这个作业要求链接链接 实验一软件工程准备 我的课程学习目标 了解github的基本使用,学习markdown编辑 ...
- 如何通过Git GUI将自己本地的项目上传至Github
最近在学习node.js和react,顺便复习了下AngluarJS相关的东西,写了些小demo想放在GitHub上,之前仅限于只申请了GitHub账号从没用过,今天花半天时间查资料认真学习Githu ...
- androidstudio 配置git和github
git是版本控制工具 github是一个网站,git可以把项目上传至这个网站 1:先下载git,并且安装,一般默认即可,安装成功可以点击电脑右键出现 2:生成id_rsa.pub, 配置账号和邮箱 点 ...
- git github 异常
git :版本控制工具 github:项目托管 git clone failed:git是否安装正确 github commit failed:github 是否账号 / 密码是否正确(密码错误也可以 ...
随机推荐
- IOS 请求数据解析 XML 和 JSON
好久没写文章了,回忆一下以前的内容记录一下吧. 这一段主要接触的就是数据解析,就说一下数据解析 现在数据解析一般解析两种数据 xml 和 JSON 那就从xml解析说起吧 xml解析需要用到一个类 N ...
- Mac下利用Cordova打包 iOS App以及出现的问题
安装 cordova sudo npm install cordova 创建项目 创建一个demo文件夹,里面自动加载基本的文件以及目录 cordova create demo com.test.de ...
- ThinkPHP框架 【 AJAX方法返回 】 例子:简单添加一条数据 和 查询一个表里的数据
注:thinkphp使用ajax和之前使用ajax的方法一样,不同点在于之前的ajax中的url指向了一个页面,而thinkphp里面的url需要指向一个操作方法. 在模块控制器Controller文 ...
- SQL多结果集导出Excel
由于本项目工作中需要,有时会导出一些数据给客户,但又不是每次都需要,可能这次用了下次可能就不会使用,导出数据,我们正在做的一个项目中与四川地区有关,所以导出数据就有如下需求: 1. 按各市导出数据, ...
- Steeltoe之Circuit Breaker篇
在分布式系统中,服务发生异常是很正常的现象.为了处理这类"例外",可以采取不同的应对策略,断路器模式即是其中一种方法.这个模式的主要特点是其可以阻断失败的级联影响,不会因为一个服务 ...
- ado.net EF学习系列----深入理解查询延迟加载技术(转载)
ado.net EF是微软的一个ORM框架,使用过EF的同学都知道EF有一个延迟加载的技术. 如果你是一个老鸟,你可能了解一些,如果下面的学习过程中哪些方面讲解的不对,欢迎批评指教.如果一个菜鸟,那我 ...
- MAC apache服务器搭建
一.启动原本服务器 首先打开“终端(terminal)”,输入 sudo apachectl -v,(可能需要输入机器秘密).如下显示Apache的版本: 可以输入启动命令进行启动: sudo apa ...
- arcengine实现右键菜单打开/关闭所有图层
参考资料: http://developer.51cto.com/art/201104/256774.htm 参照后自己做的: 关于右键菜单的几个有价值的网址: http://blog.csdn.n ...
- PHP之获取终端用户IP
// function get_real_ip() { $ip=false; $clientip = "clientip"; $xrealip = "xrealip&qu ...
- 转载:SDWebImage支持URL不变时更新图片内容
转载 http://blog.handy.wang/blog/2016/01/29/sdwebimagehuan-cun-zhi-tu-pian-urlbu-bian/ SDWebImage在iOS项 ...