前言:从2013年第一次听过github,到2014年开始正式接触学习,途中一直都很迷惘,始终没搞明白这到底是个什么东西,到底怎么玩,可能是一开始就没搞清楚Git和github的区别,记得一开始看了很多文档和视频,可始终是一头雾水,搞半天只学会了拉代码,不会上传,但功夫不负有心人最终我还是学会了,感谢那个曾经一直很努力的自己吧。本文会讲述我遇到的坎,以及各位朋友曾向我提到的问题。

一、git和github的区别

git是一种版本控制系统。跟svn、cvs是同级的概念。 
github是一个网站,给用户提供git服务。这样你就不用自己部署git系统,直接用注册个账号,用他们提供的git服务就可以。 
那是不是只有一个提供可以git服务的网站呢,答案是否定的,除了那个全世界最大的代码网站(github),还有一些小众的gitcafe、gitlab…等等,以及受国内开发者欢迎的oschinagit, 
当然是用这些服务都是必须注册使用的,另外再强调一件事情,越来越多的公司都开始用git进行管本控制了,公司肯定是自己搭建git服务了,最常见的是gitlab,如下图。

这里写图片描述

二、如何下手学习和使用

我曾经有这样一个经历,不知道有没有人和我一样,因为一开始没搞清楚git和github的区别,且经常看到别人动不动放出一个github项目,地址都是https://github.com/xx/xx.git,就直接去别人的官网https://desktop.github.com/的下客户端工具GithubStep.exe想“好好的”用下github,如下图:

这里写图片描述

问题是搞了半天,还是不知道如何操作,上传不会、更新不会,这时候你就想github怎么用起来这么麻烦,也许你会说,我英文好,我有的是时间,我可以慢慢摸索,那我想说,你为什么要在一棵树上吊死呢,还有你以后工作中用git服务可不是用的github,换到了gitlab你咋办,这个github自己的客户端工具仅仅对github有用噢。

其实你要明白github只是一个git服务而已,我们还是回归到git来吧,会用git管它什么代码托管服务,git的官方网站是https://git-scm.com/,下载 这里写图片描述 
按步骤安装,这个客户端工具最终可以给你带来的结果是,你在你任意文件夹右键将看到 
这里写图片描述

Git GUI Here
Git Bash Here

点击它们分别看到的界面是: 
这里写图片描述

这里写图片描述 
其中我们以后常用的是git bash here,原因是用命令操作git服务更加灵活。

三、如何用命令往github上传项目

由于我们使用的是git bash命令操作,首先得设置一些全局变量,如个人信息配置 
命令如下:

git config --global user.name 'love-somnus'
git config --global user.email '928200207@qq.com'
  • 1
  • 2
  • 1
  • 2

在完成此步骤后,继续真正的操作。 
1、注册完成后登陆进去,创建一个仓库 
这里写图片描述

点击new会弹出如下界面 
这里写图片描述

仓库名repository name就是你需要上传的项目名,填写完毕就可以提交了。

2、进入需要上传的项目目录,右键git bash进行后续操作

#初始化新版本库(通过git把项目管理起来)
git init
#添加所有文件(只是在本地准备好,注意那个“.”表示所有文件)
git add .
#提交本地git仓库(引号中是说明信息)
git commit -a -m 'version 1.2.3'
#连接远程仓库
git remote add origin https://github.com/love-somnus/Spring.git
#推入远程仓库
git push origin master 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在完成最后一个命令后会弹出输入框,让你分别输入用户名和密码,输入完毕后,你的项目将会提交到github上啦

四、如何进行拉取github上的项目和修改了代码如何更新

1、拉取代码是最简单的,如下命令就搞定,选取你要拉取到的目标目录

git clone https://github.com/love-somnus/Spring.git
  • 1
  • 1

2、修改代码提交,比第一次上传代码简单点,如下

git add .
git commit -a -m 'version 1.2.3'
git push origin master 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

这里还是要输入用户名、密码的

五、如何免用户名和密码连接github

这也是很多同学关心的,每次都要输入用户名、密码太繁琐了

git提供了多重协议用来连接git服务器,其中最常见的就是https和git,git就是可以免用户名和密码的,不同的协议,项目连接地址是有区别的,如下

但是在你使用git协议的时候,要确保把你当前机器的公钥交给github,由于公钥是独一无二的,github能够认证

5.1、本地生成密钥对

任意目录操作下列命令

$ ssh-keygen -t rsa -C "928200207@qq.com"

# Creates a new ssh key using the provided email # Generating public/private rsa key pair. 

# Enter file in which to save the key (/home/you/.ssh/id_rsa):
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

直接Enter就行。然后,会提示你输入密码,如下(建议输一个,安全一点,当然不输也行):

Enter passphrase (empty for no passphrase): [Type a passphrase] 

# Enter same passphrase again: [Type passphrase again]
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

完了之后,大概是这样。

Your identification has been saved in /home/you/.ssh/id_rsa. 

# Your public key has been saved in /home/you/.ssh/id_rsa.pub. 

# The key fingerprint is: # 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db 928200207@qq.com
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

这样。你本地生成密钥对的工作就做好了。如下图

这里写图片描述

5.2、设置github上的公钥

  1. 登陆你的github帐户。然后 Account Settings -> 左栏点击 SSH Keys -> 点击 Add SSH key 
    这里写图片描述
  2. 然后你复制上面的公钥内容,粘贴进“Key”文本域内。 title域,你随便填一个都行。 
    这里写图片描述
  3. 完了,点击 Add key。

然后,验证下这个key是不是正常工作

$ ssh -T git@github.com
# Attempts to ssh to github
  • 1
  • 2
  • 1
  • 2

如果,看到:

Hi username! You've successfully authenticated, but GitHub does not # provide shell access.
  • 1
  • 1

就表示你的设置已经成功了

5.3、修改git的remote url为git协议

如果你在连接github仓库的时候,用的https协议的地址,还需要切换为git协议 
可以用git remote -v 查看你当前的remote url

$ git remote -v

origin https://github.com/love-somnus/Spring.git (fetch)
origin https://github.com/love-somnus/Spring.git (push)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

可以看到是使用https协议进行访问的。

这时,你可以使用 git remote set-url 来调整你的url。

git remote set-url origin git@github.com:love-somnus/Spring.git
  • 1
  • 1

完了之后,你便可以再用 git remote -v 查看一下。

至此,OK。

你可以用git fetch, git pull , git push, 现在进行远程操作,应该就不需要输入密码那么烦了。

六、如何用eclipse对github项目进行版本管理

6.1 eclipse上安装GIT插件EGit

这里写图片描述

这里写图片描述

EGit插件地址:http://download.eclipse.org/egit/updates

6.2 在eclipse中配置EGit

Preferences > Team > Git > Configuration

这里写图片描述

这里的user.name 是你在https://github.com上注册用户名

这里写图片描述

user.email是你在github上绑定的邮箱

6.3 从git服务器down项目

第一步当然是import了,找到git,如下图 
这里写图片描述

这里写图片描述

前面的弹出框都比较简单,现在关键是下面的弹出框,内容比较多,如何填下面会做说明

这里写图片描述

这里面主要内容在于填URI文本框,复制粘贴你需要导入的项目地址如下图

这里写图片描述

其中下面有三项是自动生成的,这些是不需要你再去更改的,至于其它框都不是必填的,特别是port,Authentication如果你想填完并且保存起来,不妨输入进去。

如果URI使用的是git协议呢,如下图

这里写图片描述

出现如上界面,什么都不用做,不用输,直接next,出现下图

这里写图片描述

继续next

这里写图片描述

可以把默认的directory换成你所想放置的目录。

再一次next,出现如下界面

这里写图片描述

默认选中第一个就好,然后最后一次next,出现如下

这里写图片描述

点击finished,你就可以发现,spring项目已经成功引入到eclipse中了,并且由于选用的是git协议,以后都无须输入用户名、密码。

6.4 新建项目,并将代码提交到本地的GIT仓库中

1、新建项目 git-demo,并新建HelloWorld.Java

这里写图片描述

2、将git-demo项目提交到本地仓库,如下图

这里写图片描述

选中git

这里写图片描述

这里写图片描述

到此步,就成功创建GIT仓库。但文件夹处于untracked状态(文件夹中的符号”?”表示),下面我们需要提交代码到本地仓库,如下图

这里写图片描述

这里写图片描述

这里写图片描述

这样代码提交到了本地仓库

6.5 将本地代码提交到远程的GIT仓库中

准备工作:在https://github.com上确保已经创建仓库

这里写图片描述

准备工作做好了,那开始将代码提交到远程仓库吧

这里写图片描述

这里写图片描述

下一步next,出现如下图

这里写图片描述

选中它,然后点击右边的Add Spec

这里写图片描述

这里写图片描述

点击next

这里写图片描述

点击finished,出现如下界面,则代表提交成功

这里写图片描述

6.6 如何提交已修改的项目

这里写图片描述

这里写图片描述

这里写图片描述

改勾的全勾上,并且点击提交和推送按钮

6.7 如何恢复未提交的修改文件

这里写图片描述

7 关于github上的java项目文件目录问题

这里我们拿maven项目为例

这里写图片描述

这里面其实真正需要的项目和文件只有我勾选的三个,其它的都是eclipse给我们生成的文件。真实公司项目,可不要把这些eclipse生成的东西提交上去,毕竟你的同事如果用的是idea或者netbean啥的,它们可不需要这些eclipse生成的东西,对它们来说是多余的,当然他们的ide生成的东西,也是不应该被提交的,而控制哪些不该被提交的则是这个文件这里写图片描述

而我之所以把它们提交到github了,是因为这是我的私人项目,我并不需要谁来参与进来,我的项目我只会拿eclipse,我愿意全部提交上去。

另外有一点不得不提,很多人在下载我的项目后,发现eclipse上显示我的项目是已经修改过的状态,但自己却并没有动过任何java或者配置文件,其实这是因为我们的eclipse环境不同,你的eclipse对项目的相关eclipse生成文件做了重新的修改导致,如果要解决此类问题,直接恢复更改吧。

写在最后,如果还有什么不清楚的,可以在文章下面留言。

8 通过eclipse的egit插件提交提示Auth fail

git可以add to index–>commit。但在pull的时候出现: org.eclipse.jgit.api.errors.transportexception。

解决办法: 
Eclipse windows–>preferences–>general–>security–>secure storage–>contents–>GIT. 
选中ssh后点击delete。

重启Eclipse就可以了。

附上一个stackoverflow的解决方法:http://stackoverflow.com/questions/3601805/auth-failed-error-with-egit-and-github

文章转载自(文章转载已经经过博主允许,请各位转载的猿友转载是自觉附上转载地址):http://blog.csdn.net/lovesomnus/article/details/51916487
浏览 573 评论 0 赞 0 砸 0 标签: git 工具
评论
还可以再输入500个字

请您注意

·自觉遵守:爱国、守法、自律、真实、文明的原则
·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规
·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·您在NoteShare上发表的作品,NoteShare有权在网站内保留、转载、引用或者删除
·参与本评论即表明您已经阅读并接受上述条款