作为一个开发者,写博客,上传项目到github好像是不可不会的技能,很多有经验的老司机都会这么建议你。本宝宝第一次要把项目传到github的时候,确实有点蒙蔽,什么鬼,传个东西有必要这么难吗?
git 是有gui的,但是网上一搜,一大堆,这里宝宝介绍一个比较好用也是使用人数比较多的gui,叫做Source Tree,大家自己去网上下载下很快的,今天宝宝要说的是用命令行上传代码,很高大上有木有?是时候装一波b了。
首先根据下图的操作创建一个仓库,这是干什么的?可以简单粗暴的理解为一个项目一个仓库就行了。
创建成功后看到到下图,这图的那个地址先记住了,一会可是要用的呢,这是这个仓库的地址,我们项目要传到这里来。
然后就去下载一个git,可以网上搜索git下载,会有很多教程,这里宝宝贴出官方的下载地址:https://git-scm.com/downloads/ 还有一个网上找的安装教程:http://jingyan.baidu.com/article/7f766dafba84f04101e1d0b0.html
接着打开Git的安装路径,打开git-bash.exe,然后会发现打开了一个打命令行的东西。
就是这个东东,我们就是要在这里写命令行。
宝宝的项目放在J:\MVPDemo\MVPDemo ,我们第一步就是要进入这个目录下,cd 是用来进入某个目录的,白色的字是宝宝打的(前面那个美元符号是自动生成的),然后现在就进入了我们要上传路径的目录下。
第二步输入git init,如下图所示,这个意思是在当前项目的目录中生成本地的git管理(会发现在当前目录下多了一个.git文件夹)
第三步输入git add.,这个是将项目上所有的文件添加到仓库中的意思,如果想添加某个特定的文件,只需把.换
成这个特定的文件名即可。
账号密码都正确的话,会看到下面这么一个东西,进度还会跳,这个是上传过程中的进度,这个过程可能有点慢,有时候得等个10几分钟,这时候去github上面看,还是什么都没有的,所以大兄弟别着急,先做点其他的事,晚点再来看看。
上传成功后,就是这个样子了。
最后附上一个别人写的常见的git错误
Git跟踪谁修改了项目,哪怕参与项目开发的只有一个人。为此,Git需要知道你的用户名和电子邮件。你必须提供用户名,但可以使用虚构的电子邮件地址:
git config --global user.name "Username"
git config --global user.email "[email protected]"
注意git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2.创建项目(如果没有项目的话可使用这一步)
我们来创建一个要进行版本控制的项目(又称版本库)。在你的系统创建一个文件夹,并将其命名为learngit。
我创建learngit的程序如下:
mkdir learngit #创建文件learngit
cd learngit #进入learngit文件里面
pwd #显示learngit的存在目录
3.初始化仓库
我是上传项目到,即已有项目,根据前面所说的,先定位到具体项目文件夹目录。并通过git init
命令把这个目录变成Git可以管理的仓库。瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。要是删除这个东西,则丢弃项目的所有记录。
如果你没有看到.git
目录,那是因为这个目录默认是隐藏的,用ls -ah
命令就可以看见。
也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。不过,不建议你使用自己正在开发的公司项目来学习Git,否则造成的一切后果概不负责。
4.检查状态
在执行其他操作之前,先来看一下状态:
$ git status
On branch master
No commits yet
Untracked files:
(use "git add ..." to include in what will be committed)
文件列表
nothing added to commit but untracked files present (use "git add" to track)
在Git中,分支是项目的一个版本,从这里的输出我们可以知道,我么位于分支的master。
我们每次查看项目的状态时候,输出的都是我们位于分支master上,接下里的输出表明,我们将进行初始项目,提交是项目在特定时间的快照。
Git指出了项目中未被跟踪的文件,因为我们还没有告诉他要跟踪那些文件,接下里我们被告知没有任何东西添加到当前提交里面,但我们可能需要将为跟踪的文件加入仓库
5.将文件加入到仓库
$ git add .
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: .classpath
new file: .project
new file: .settings/.jsdtscope
new file: .settings/org.eclipse.jdt.core.prefs
new file: .settings/org.eclipse.wst.common.component
new file: .settings/org.eclipse.wst.common.project.facet.core.xml
new file: .settings/org.eclipse.wst.jsdt.ui.superType.container
new file: .settings/org.eclipse.wst.jsdt.ui.superType.name
new file: README
new file: README.bak
new file: WebContent/META-INF/MANIFEST.MF
new file: WebContent/WEB-INF/lib/cas-client-core-3.2.1.jar
new file: WebContent/WEB-INF/lib/commons-beanutils-1.8.3.jar
new file: WebContent/WEB-INF/lib/commons-logging-1.2.jar
new file: WebContent/WEB-INF/lib/javax.servlet-api-3.1.0.jar
new file: WebContent/WEB-INF/lib/javax.servlet.jsp-api-2.3.1.jar
new file: WebContent/WEB-INF/lib/jstl-1.2.jar
new file: WebContent/WEB-INF/lib/log4j-1.2.17.jar
new file: WebContent/WEB-INF/lib/mysql-connector-java-5.1.36.jar
new file: WebContent/WEB-INF/lib/shiro-cas-1.2.3.jar
new file: WebContent/WEB-INF/lib/shiro-core-1.2.3.jar
new file: WebContent/WEB-INF/lib/shiro-web-1.2.3.jar
new file: WebContent/WEB-INF/lib/slf4j-api-1.7.12.jar
new file: WebContent/WEB-INF/shiro.ini
new file: WebContent/WEB-INF/web.xml
new file: WebContent/error.jsp
new file: WebContent/success.jsp
new file: build/classes/com/java/dao/UserDao.class
new file: build/classes/com/java/entity/User.class
new file: build/classes/com/java/realm/ShiroRealm.class
new file: build/classes/com/java/util/DbUtil.class
new file: src/com/java/dao/UserDao.java
new file: src/com/java/entity/User.java
new file: src/com/java/realm/ShiroRealm.java
new file: src/com/java/util/DbUtil.java
命令 git add . 将项目中未被跟踪的文件都加入到仓库中,它不提交这些文件,而只是让git开始关注他们。现在我们检查这个项目的状态,发现Git找到了需要提交的文件的一些修改,标签 new file 表示这些文件是新加入的。
6.执行提交
$ git commit -m "started project"
[master (root-commit) 81e0889] started project
35 files changed, 406 insertions(+)
create mode 100644 .classpath
create mode 100644 .project
create mode 100644 .settings/.jsdtscope
create mode 100644 .settings/org.eclipse.jdt.core.prefs
create mode 100644 .settings/org.eclipse.wst.common.component
create mode 100644 .settings/org.eclipse.wst.common.project.facet.core.xml
create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.container
create mode 100644 .settings/org.eclipse.wst.jsdt.ui.superType.name
create mode 100644 README
create mode 100644 README.bak
create mode 100644 WebContent/META-INF/MANIFEST.MF
create mode 100644 WebContent/WEB-INF/lib/cas-client-core-3.2.1.jar
create mode 100644 WebContent/WEB-INF/lib/commons-beanutils-1.8.3.jar
create mode 100644 WebContent/WEB-INF/lib/commons-logging-1.2.jar
create mode 100644 WebContent/WEB-INF/lib/javax.servlet-api-3.1.0.jar
create mode 100644 WebContent/WEB-INF/lib/javax.servlet.jsp-api-2.3.1.jar
create mode 100644 WebContent/WEB-INF/lib/jstl-1.2.jar
create mode 100644 WebContent/WEB-INF/lib/log4j-1.2.17.jar
create mode 100644 WebContent/WEB-INF/lib/mysql-connector-java-5.1.36.jar
create mode 100644 WebContent/WEB-INF/lib/shiro-cas-1.2.3.jar
create mode 100644 WebContent/WEB-INF/lib/shiro-core-1.2.3.jar
create mode 100644 WebContent/WEB-INF/lib/shiro-web-1.2.3.jar
create mode 100644 WebContent/WEB-INF/lib/slf4j-api-1.7.12.jar
create mode 100644 WebContent/WEB-INF/shiro.ini
create mode 100644 WebContent/WEB-INF/web.xml
create mode 100644 WebContent/error.jsp
create mode 100644 WebContent/success.jsp
create mode 100644 build/classes/com/java/dao/UserDao.class
create mode 100644 build/classes/com/java/entity/User.class
create mode 100644 build/classes/com/java/realm/ShiroRealm.class
create mode 100644 build/classes/com/java/util/DbUtil.class
create mode 100644 src/com/java/dao/UserDao.java
create mode 100644 src/com/java/entity/User.java
create mode 100644 src/com/java/realm/ShiroRealm.java
create mode 100644 src/com/java/util/DbUtil.java
我们在执行 git commit -m "Started project" 的时候以拍摄项目的快照。标志-m 让Git接下里的消息(“Started project")记录到项目中的历史记录中,输出表明我们在分支master 上,而且有一个文件被修改了。
简单解释一下git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
7.查看提交历史
$ git log
commit 81e08898c1cd905e21d11e11a8de9d7a8ebe5f43 (HEAD -> master)
Author: xudsong
Date: Fri May 4 09:52:18 2018 +0800
started project
我们每次提交的时候,Git都会生成一个包含40字符的独一无二的引用ID,它记录提交是谁执行的,提交的时间以及提交的指定消息,并非在任何情况下你都需要所有的这些信息,因此Git提供一个选项,让我们能够打印提交历史条目的更简单的版本。
$ git log --pretty=oneline
5d6cecad80427924b94b14c6fd2bb82a4fa86840 (HEAD -> master) Started project
标志 --pretty=oneline 指定显示一项最重要的信息,提交的引用ID以及为提交记录的消息。
就这样整个项目就提交到GitHub上了。
参考文档:
问题:github中non-fast-forward错误的解决:http://www.cnblogs.com/xwdreamer/archive/2012/05/29/2523958.html
问题:fatal: HttpRequestException encountered解决方法:https://blog.csdn.net/txy864/article/details/79557729