Git入门及上传项目到GitHub(上)
今天上传一个小demo到GitHub中,做简要记录和学习:
1、创建版本库
1.1、创建进入目录
- 创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd //显示当前目录
- 或者进入已经存在的项目目录
$ cd /Users/safiri/Downloads/ZSBannerScrollViewDemo
1.2、把目录变成Git可以管理的仓库
$ git init
//Initialized empty Git repository in /Users/safiri/Downloads/ZSBannerScrollViewDemo/.git/
$ ls -ah // 查看默认是隐藏的.git目录
1.3、把文件添加到版本库
- 例 1
编写一个README.md文件并添加到ZSBannerScrollViewDemo版本库:
$ vim README.md
// 1. 一定要在Git仓库的目录下创建要添加的文件,可以手动创建并编辑内容。这里用vim创建并编辑了。
$ git add README.md //把文件添加到仓库
$ git commit -m "添加一个项目介绍文件README.md" //把文件提交到仓库
- 例2
commit
可以一次提交很多文件,所以你可以多次add
不同的文件
$ git add file1.txt
$ git add file2.text file3.txt
$ commit -m "add 3 files."
2、远程仓库
-
自己搭建一台运行Git的服务器。
-
GitHub网站提供的Git仓库托管服务:
由于本地Git仓库和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
是公钥,可以放心地告诉任何人。
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub
文件的内容:
![](https://img.haomeiwen.com/i838624/c8aa456159b127fa.jpg)
点“Add Key”,你就应该看到已经添加的Key。
注意1:建议用命令复制ssh key,用文本软件打开有可能出错!
mac:
pbcopy < ~/.ssh/id_rsa.pub
windows:
clip < ~/.ssh/id_rsa.pub
linux:
sudo apt-get install xclip
xclip -sel clip < ~/.ssh/id_rsa.pub
注意2:
- GitHub只要知道了你的公钥,就可以确认只有你自己才能推送修改。
- GitHub允许你添加多个Key,只要把需要提交的每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
- GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
- 如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。
2.1、添加远程库
一般情况下已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步。
刚才我创建了一个本地的Git仓库ZSBannerScrollViewDemo
第1步,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。
第2步,在本地的ZSBannerScrollView
仓库下命令:
git remote add [shortname] [url]
命令,给远程仓库一个别名shortname
$ git remote add origin git@github.com:safiriGitHub/ZSBannerScrollView.git
第3步,把本地库的所有内容推送到远程库上:
#如果发生远程与本地仓库的冲突,要先将远程仓库的更新下载更新到本地仓库
$ git pull origin master
$ git push -u origin master
//由于远程库是空的,我们第一次推送master分支时,加上了-u参数,
//Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
//从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
# 如果因为两个仓库不同,发现refusing to merge unrelated histories,无法pull
因为他们是两个不同的项目,要把两个不同的项目合并,git需要添加一句代码:git pull,这句代码是在git 2.9.2版本发生的,最新的版本需要添加--allow-unrelated-histories
假如我们的源是origin,分支是master,那么我们 需要这样写git pull origin master --allow-unrelated-histories
2.2、从远程库克隆。
第1步,登陆GitHub,创建一个新的仓库,名字叫ZSBannerScrollView。
第2步是用命令git clone克隆一个本地库:
$ git clone git@github.com:safiriGitHub/ZSBannerScrollView.git
-
Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。但通过ssh支持的原生git协议速度最快。
-
使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
-
如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
第3步,在克隆的本地库文件夹下添加要上传的项目、文件等等。
第4步,cd
进入ZSBannerScrollView
文件夹下
$ git add . //把所有的新文件添加。
$ git commit -m "添加文件"
$ git push origin master //推送到远程库。
有跟新或者改动的话重复第三第四步不断更新。
另外,要随时掌握工作区的状态,使用git status
命令。如果git status
告诉你有文件被修改过,用git diff
可以查看修改内容。