ubuntu16.04之GitHub入门教程

什么是 Github?

github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。

Github 由Chris Wanstrath, PJ Hyett 与Tom Preston-Werner三位开发者在2008年4月创办。迄今拥有59名全职员工,主要提供基于git的版本托管服务。

注册账户以及创建仓库

要想使用github第一步当然是注册github账号了, github官网地址:https://github.com/。 之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。


安装Git

一个全新的ubunt系统,需要安装Git(系统是不具有该工具的),方法如下: 

在terminel中输入如下命令:

sudo apt-get install git git-core git-gui git-doc git-svn git-cvs gitweb gitk git-email git-el git-arch

检查是否安装了git

:~$ git version
git version 2.7.4

下来需要检查SSH

因为GitHub会用到SSH,因此需要在shell里检查是否可以连接到GitHub:

ssh -T git@github.com

如果看到:

Warning: Permanently added ‘github.com,204.232.175.90’ (RSA) to the list of known hosts. 
Permission denied (publickey).

则说明可以连接。

为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。


配置Git

首先在本地创建 ssh key;

第一步:检查本地是否已井具有ssh keys,如果已经具有,则进行第二步,否则,进行第三步

cd ~/.ssh
ls

第二步:备份并移除已经存在的ssh keys

mkdir key_backup
cp id_rsa* key_backup
rm id_rsa* 
  • 1
  • 2
  • 3

即将已经存在的id_rsa,id_rsa.pub文件备份到key_backup文件夹

第三步:执行如下命令(不具有ssh keys时):

ssh-keygen -t rsa -C "你自己的github对应的邮箱地址"
  • 1

注1:双引号“”是需要的! 
注2:命令是在ssh目录下进行的!

你需要把邮件地址换成你自己github的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。

如果一切顺利的话,可以在用户主目录里找到.ssh目录(通过ls查看~/.ssh下面的所有内容查看),里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第四步:将刚刚创建的ssh keys添加到github中 
(1)利用gedit/cat命令,查看id_rsa.pub的内容 
(2)在网站GitHub中,依次点击Settings -> SSH Keys -> Add SSH Key,将id_rsa.pub文件中的字符串复制进去,注意字符串中没有换行和空格。

第五步:再次检查SSH连接情况(在~/.ssh目录下):

输入如下命令:

ssh -T git@github.com
  • 1

如果看到如下所示,则表示添加成功:

Hi 你的同户名! You’ve successfully authenticated, but GitHub does not provide shell access.

此时,发现github上已有了SSH keys

注1:之前在设置公钥时如果设置了密码,在该步骤会要求输入密码,那么,输入当时设置的密码即可。

注2:通过以上的设置之后,就能够通过SSH的方式,直接使用Git命令访问GitHub托管服务器了

开始使用github

接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

即利用自己的用户名和email地址配置git

git config --global user.name "你的github用户名"
git config --global user.email "你的github邮箱地址"

如何推送本地内容到github上新建立的仓库

github上新建立仓库

具体内容不做介绍,假设,新建的仓库为dockerfiels

在本地建立一个目录

该目录名称与github新建立的目录相同,假设本地目录为~/Document/dockerfiles

本地仓库初始化

cd ~/Document/dockerfiles
git init
  • 1
  • 2

对本地仓库进行更改

例如,添加一个Readme文件

touch Readme
  • 1

对刚刚的更改进行提交

该步不可省略!

git add Readme
git commit -m 'add readme file'
  • 1
  • 2

push

首先,需要将本地仓库与github仓库关联 ,有两种方式(SSH和https)

git remote add origin https://github.com/你的github用户名/你的github仓库.git

或者

$ git remote add origin git@github.com:你的github用户名/你的github仓库.git 
$ git pull origin master

将远程仓库的文件重新下载到本地仓库,然后再次执行

$ git push origin master 

三、删除远程仓库不想要的文件

ps:我们在上传项目后如果上传了你不想要的文件怎么办?很操蛋的在github上我们是不能直接删除仓库的文件,我们只能通过终端命令来删除我们不想要的文件或者目录

Git 如何删除远程服务器文件同时保留本地文件

在上传工程到git上时,有时候会把本地的一些eclipse配置文件传到服务器上,这时你先删除本地,再同步服务器,显然是不合理的。git提供了一个好的解决方法,可以直接删除服务器文件,同时不影响本地文件,命令如下

1.删除服务器文件,本地保留

此时github上已经不存在了

2.删除远程useless 文件夹,本地保留

一定要注意,删除文件夹要使用-r 参数

git rm --cached -r useless
git commit -m "remove directory from remote repository"
git push

git init # 初始化本地Git版本库 git add # 暂存文件,如果使用.表示当前目录及其子目录 git commit -m “first commit” # 提交,-m选项后跟内容为提交所用的注释 git remote -v # 查看当前项目远程连接的是哪个版本库地址 git push origin master # 将本地项目提交到远程版本库

git fetch origin # 取得远程更新(到origin/master),但还没有合并 git merge origin/master # 把更新的内容(origin/master)合并到本地分支(master) git pull origin master # 相当于fetch和merge的合并,但分步操作更保险

ssh和https两种方式区别:

1.clone项目:使用ssh方式时,首先你必须是该项目的管理者或拥有者,并且需要配置个人的ssh key。而对于使用https方式

来讲,就没有这些要求。

2.push:在使用ssh方式时,是不需要验证用户名和密码,如果你在配置ssh key时设置了密码,则需要验证密码。而对于使用

https方式来讲,每次push都需要验证用户名和密码。

然后,push

git push origin master

如何推送本地内容到github上已有的仓库

从github上将该仓库clone下来

git clone https://github.com/你的github用户名/github仓库名.git 
如果是从自己仓库clone,还可以使用ssh方式

git clone [email protected]:你的github用户名/github仓库名.git

对clone下来的仓库进行更改

例如,添加一个新的文件

touch Readme_new
  • 1

对刚刚的更改进行提交

该步不可省略!(其实是提交到git缓存空间)

git add Readme_new
git commit -m 'add new readme file'
  • 1
  • 2

push

首先,需要将本地仓库与github仓库关联 
注:https://github.com/你的github用户名/你的github仓库.git 是github上仓库的网址

git remote add origin https://github.com/你的github用户名/你的github仓库.git  
  • 1

有时,会出现fatal: remote origin already exists.,那么,需要输入git remote rm origin 解决该问题

然后,push,此时,可能需要输入github账号和密码,按要求输入即可

git push origin master
  • 1

注:有时,在执行git push origin master时,报错:error:failed to push som refs to…….,那么,可以执行

git pull origin master
  • 1

至此,github上已有的仓库的便有了更新


如果需要添加文件夹,有一点需要注意:该文件夹不能为空!否则不能成功添加

git push时候若出现如下错误:

error: failed to push some refs to 'https://github.com/dummymare/Hello-World.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.


造成这个错误的原因可能是因为你远程仓库已经存在文件,和你本地仓库文件不一致,或者你本地仓库的文件不是最新的,这个时候,你需要执行

下面这行命令:

$ git pull origin master

将远程仓库的文件重新下载到本地仓库,然后再次执行

$ git push origin master 


删除远程仓库不想要的文件

ps:我们在上传项目后如果上传了你不想要的文件怎么办?很操蛋的在github上我们是不能直接删除仓库的文件,我们只能通过终端命令来删除我们不想要的文件或者目录

Git 如何删除远程服务器文件同时保留本地文件

在上传工程到git上时,有时候会把本地的一些eclipse配置文件传到服务器上,这时你先删除本地,再同步服务器,显然是不合理的。git提供了一个好的解决方法,可以直接删除服务器文件,同时不影响本地文件,命令如下

1.删除服务器文件,本地保留

此时github上已经不存在了

2.删除远程useless 文件夹,本地保留

一定要注意,删除文件夹要使用-r 参数

git rm --cached -r useless
git commit -m "remove directory from remote repository"
git push


若本地不需要保留,可直接进行如下操作:

1.克隆远程仓库到本地库(若本地已克隆过这个仓库,忽略这一步)。

例如使用ssh方法:

git clone [email protected]:xxx/xxx.git

2.对需要删除的文件、文件夹进行如下操作:

git rm test.txt (删除文件)

git rm -r test (删除文件夹)

3.提交修改

git commit -m "Delete some files."

4.将修改提交到远程仓库的xxx分支:

git push origin xxx

git rm与git rm --cached

当我们需要删除暂存区分支上的文件, 同时工作区也不需要这个文件了, 可以使用

1 git rm file_path
2 git commit -m 'delete somefile'
3 git push

当我们需要删除暂存区分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

git rm --cached file_path
git commit -m 'delete remote somefile'
git push

三、git常用命令:

1、git clone 仓库地址  //克隆仓库代码到本地

2、git diff  //查看本地代码与远程代码有哪些不同

3、git pull //从远程拿到最新版本代码(提交代码时,忌讳直接提交。每次提交代码之前,一定要保证本地的代码是最新的,即先执行git pull)

4、git branch //查看本地代码属于仓库的哪个分支

5、git branch -a //查看仓库都有哪些分支

6、git checkout 分支名 //切换分支(注:不建议使用,最好给一个分支单独建立一个文件夹)

7、git clone -b 分支名 仓库地址 //克隆指定分支的仓库代码到本地

8、git push -u origin 分支名(分支名通常为master)


总结:


git 提交的步骤:

git init # 初始化本地Git版本库
git add # 暂存文件,如果使用.表示当前目录及其子目录
git commit -m “first commit” # 提交,-m选项后跟内容为提交所用的注释
git push origin master # 将本地项目提交到远程版本库

其他命令:

git remote -v # 查看当前项目远程连接的是哪个版本库地址

git fetch origin # 取得远程更新(到origin/master),但还没有合并
git merge origin/master # 把更新的内容(origin/master)合并到本地分支(master)
git pull origin master # 相当于fetch和merge的合并,但分步操作更保险



你可能感兴趣的:(ubuntu16.04之GitHub入门教程)