ubuntu上建立本地git 和 网络 github的上传与下载
github工具是一个很好用的工具,可以在本地建立一个git仓库,存储当前写的程序或者数据,然后通过ssh与github建立联系。具体怎么实现,下面进行介绍。
1、首先要安装git 软件
在Linux上安装Git
首先,你可以试着输入git
,看看系统有没有安装Git:
$ git The program 'git' is currently not installed. You can install it by typing: sudo apt-get install git
如果之前没有安装过git的话,输入上面的git命令就会出现The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
,然后输入sudo apt-get install git,就可以安装git了。
2、安装好了git之后就可以创建版本库了。什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以
被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit $ cd ./learngit $ pwd /home/sawyer/learngit
pwd
命令用于显示当前目录。
我的电脑下面显示如下:
sawyer@sawyer-ThinkPad:~$ cd ./learngit sawyer@sawyer-ThinkPad:~/learngit$ pwd /home/sawyer/learngit
3、在home下面建立好了一个文件夹之后就可以建立一个git仓库了。
建立git仓库的命令如下:
通过git init
命令把lerarngit这个目录变成Git可以管理的仓库:
$ git init Initialized empty Git repository in /home/sawyer/learngit/.git/
我的电脑显示如下:
sawyer@sawyer-ThinkPad:~/learngit$ git init Initialized empty Git repository in /home/sawyer/learngit/.git/
现在就已经初始化好了,已经建立了一个git本地仓库。在命令行输入ls无法显示.git,因为这是个隐藏文件。可以使用ls -al命令,然后会有显示,或者打开对应的文件夹,
使用快捷键ctrl+h,就可以看到在learngit 文件夹下面有一个.git文件。
4、在本地库添加一个文件命令如下
$ nano readme.txt
在readme.txt 中输入一句文本:this is my first git,然后保存
和把大象放到冰箱需要3步相比,把一个文件放到Git仓库只需要两步。
第一步,用命令git add
告诉Git,把文件添加到仓库:
$ git add readme.txt
执行上面的命令,没有任何显示,这就对了,
第二步,用命令git commit
告诉Git,把文件提交到仓库:
$ git commit -m "first git"
我的电脑显示如下:
sawyer@sawyer-ThinkPad:~/learngit$ git commit -m "first git" [master (root-commit) 48819ed] first git 1 file changed, 1 insertion(+) create mode 100644 readme.txt
简单解释一下git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
git commit
命令执行成功后会告诉你,1 file changed
:1个文件被改动(我们新添加的readme.txt文件);1 insertions
:插入了一行内容(readme.txt有一行内容)。
为什么Git添加文件需要add
,commit
一共两步呢?因为commit
可以一次提交很多文件,所以你可以多次add
不同的文件。
初始化一个Git仓库,使用git init
命令。
添加文件到Git仓库,分两步:
- 使用命令
git add <file>
,注意,可反复多次使用,添加多个文件; - 使用命令
git commit -m <message>
,完成。
以上是建立了一个本地仓库的完整过程。下面将要介绍把建好的本地库上传到github上面。
5、创建一个ssh,这里解释一下,如何把本地的仓库上传到github呢,首先需要先建立一个联系,将本地仓库与github建立联系使用ssh。
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com“
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh
目录,里面有id_rsa
和id_rsa.pub
两个文件,这两个就是SSH Key的秘钥对,id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,可以放心地告诉任何人。
第二步:将新生成的key添加到ssh-agent中(这一步必不可少):
# start the ssh-agent in the background eval "$(ssh-agent -s)" Agent pid 59566 ssh-add ~/.ssh/id_rsa
第3步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容,点“Add Key”,你就应该看到已经添加的Key。
小提示,如果不想手动打开id_rsa.pub,可以选择使用命令进行复制,命令代码如下:
sudo apt-get install xclip
# Downloads and installs xclip. If you don't have `apt-get`, you might need to use another installer (like `yum`)
xclip -sel clip < ~/.ssh/id_rsa.pub
# Copies the contents of the id_rsa.pub file to your clipboard
为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
6、现在本地库和github已经建立起了连接诶,现在就可以将本地库的信息上传到github库中了。在将本地库上传到github时需要在github上建立一个库。
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。
首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库:
在Repository name填入learngit
,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库:
目前,在GitHub上的这个learngit
仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。
现在,我们根据GitHub的提示,在本地的learngit
仓库下运行命令:
$ git remote add origin git@github.com:Deep/learngit.git
请千万注意,把上面的Deep
替换成你自己的GitHub账户名,否则,你在本地关联的就是我的远程库,关联没有问题,但是你以后推送是推不上去的,因为你的SSH Key公钥不在我的账户列表中。
添加后,远程库的名字就是origin
,这是Git默认的叫法,也可以改成别的,但是origin
这个名字一看就知道是远程库。
下一步,就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
把本地库的内容推送到远程,用git push
命令,实际上是把当前分支master
推送到远程。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
以上6步完成了本地仓库的创建,本地仓库与github建立联系,本地仓库上传到githuab仓库,下面介绍如何从github上面下载文件。
7、如何克隆github的数据,这里我以下载刚才上传的文件为例进行克隆下载。
$ git clone git@github.com:Deep/learngit.git
这个命令就可以克隆Deep帐号下的learngit了。
通过下载的这个learngit,可以修改里面的文件,在使用下面这个命令
$ git push origin master
就可以把修改的内容在上传到github上了。实现了修改github的内容。
这篇随笔主要是自己在学习git与github做的记录,学习内容参考了廖雪峰老师的网站,他写的很好,很细致,适合新手学习,在此贴上链接:https://www.liaoxuefeng.com/
里面有很多的教程。