三期主要了分享了Linux实战方面的经验,最后老徐给我们布置了一道实操题。拿到这个题的时候,我连Git是什么都不知道,但这不是关键,本次课程的重点便是熟练Linux的命令。
我咨询了度娘,得知Git是用来进行分布式版本控制的(能记录每次文件的改动),能在许多协议下使用,所以Git URL可能以ssh://, http(s)://, git://,或是只是以一个用户名(git 会认为这是一个ssh 地址)为前辍.。
git://协议较为快速和有效,但是有时必须使用http协议,比如公司的防火墙阻止了非http访问请求。
Github: 一个网站,提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等,可以托管各种git库。
如老徐提供的仓库
1、网页上登录:https://github.com/istester
然而网页上并没有看到仓库,所以clone时会报错
git clone https://github.com/istester/ido.git
(git clone git://github.com/istester/ido.git)
尝试了两种方法操作,最后有常见问题处理方法
一、自己创建仓库
Github是一个git项目的 托管网站,要将内容放到上面,必须先在网站上注册账号
1、注册个人账号:个人登录 github 所使用的
2、注册organization账号:主要适用于商业用途和大型开源项目,是不能登录的
3、Invite members(邀请团队成员):可以先忽略,后续再邀请,点完成
项目建好后,组内的成员可以通过输入网址可以进行访问:https://github.com/carinazyp
创建项目
1、Github网页上创建库(carina):点击“Create Repository” ,就完成了一个项目在github上的创建。
2、使用git在本地创建一个相同的项目
-
先查看一下未设置前的配置:cat .git/config (或 git config --list)
-
添加user和email信息后,再次检查配置,此时已显示用户信息
只更改当前项目的用户信息:
1)git config user.name "XXX"
2)git config user.email XXX@XXX.com
注:如需配置所有项目的用户信息和邮箱,使用 --global选项,代表“全局设置”,即整个系统中的git管理的所有项目都会默认使用此种配置信息。如下:
git config --global user.name "XXX" (配置所有项目用户信息)
git config --global user.email XXX@XXX.com (配置所有项目邮箱信息)
如只查用户信息:
当前项目:
git config user.name
git config user.name
所有项目:
git config --global user.name
git config --global user.email
- 创建本地文件夹(~代表/root/用户明目录):
mkdir ~/carina (即/root/carina)
cd ~/carina - 创建文件并赋值内容11
echo "# 11" >> README.md - 按照Github网页上的命令输入(步骤1 点Create Repository后就会跳转到该页面)
1)git init (初始化一个Git仓库,把目录变成Git可以管理的仓库)
2)git add README.md (添加文件到仓库)
3)git commit -m "first commit"
(提交文件到仓库,-m后面输入的是本次提交的说明,commit可以一次提交很多文件)
4)git remote add origin git@github.com:Carinazhang/carina.git
5)git push -u origin master (将改动传回git)
(可以把 master 换成你想要推送的任何分支)
如git add 报错,则需先创建文件/文件夹
Github上面的carina项目内容已被更新
3、添加文件及文件夹
- 文件:
1)touch(创建的是空文件)
2)直接用vi text.txt,编辑内容后保存)
3)echo "文字描述" >> 文件名 -
文件夹:mkdir
-
编辑与查看文件内容:vi / cat
-
查看创建的内容:ll
4、添加并上传文件 :git add (添加)/git commit (提交)
P.S. 空文件不能添加,如图中b、c文件夹里面并没有子文件
- 查看当前仓库的状态 git status
-
查看git 操作记录
5、文件打包:tar -zcvf
6、部署目录
创建文件夹 www,clone版本库
7、解压文件:tar -zxvf
常见问题
1、项目权限不足
2、get remote add origin 报错
解决办法如下
1)git remote rm origin
2)git remote add origin git@github.com:个人账号/项目名.git
3、在使用git 对源代码进行push到gitHub时可能会出错
出现错误的主要原因是github中的README.md文件不在本地代码目录中
解决办法
先执行 git pull --rebase origin master
再执行 git push -u origin master
即可完成代码上传到github
以下补充下密码设置方法
Git使用https协议,每次pull, push都要输入密码,可以通过以下3步省去输密码的麻烦
-
本地生成密钥对
检查计算机密钥:cd ~/.ssh
如没有id_dsa.pub(公钥) 或 id_rsa(密钥)文件,可以用 ssh-keygen 来创建
命令:ssh-keygen -t rsa -C “email”
如不设置密码直接敲回车键
-
添加公钥到github帐户
1)查看公钥:cat ~/.ssh/id_rsa.pub
2)登录github帐户进行设置
Settings--SSH and GPG keys--New SSH key(填写Key)-Add SSH key
输入个人账号的密码 进行确认
3)验证key是否正确:ssh -T git@github.com
-
修改本地的ssh remote url. 不用https协议,改用git 协议
1)查看当前的remote url:git remote -v,从下图看到是用https协议进行访问的
2)登录github,切换至SSH
3)使用 git remote set-url来调整url
git remote set-url origin git@github.com:Carinazyp/carina.git
二、网上下载仓库
1、寻找库 https://git.kernel.org/pub/scm/
2、clone仓库
命令:git clone https://www.kernel.org/pub/scm/git/git.git
若不指定路径时默认clone在根目录下(若想指定路径,先cd到目录 再clone)
3、打包文件 打包上传到服务器:
-
先创建根目录再建子目录:cd到app1下,mkdir bak www
- 如app1目录不存在,可直接建多级树:mkdir -p /app1/bak /app1/www,若存在app1,这样操作也是可以的,系统会在app1下创建2个bak和www)
-
打包文件:cd到etc目录
tar -zcvf /app/bak/zyp1.tar.gz audit cloud dhcp dracut.conf
- 上传至虚拟机:scp local_file remote_ip:remote_file(本地文件上传至远程)
scp /app1/bak/zyp1.tar.gz 192.168.174.128:/app1/bak
4、部署到www目录
命令:mv /app1/bak/zyp1.tar.gz /app1/www
(此时不在根目录下也可以操作)
也可以进行文件copy
5、解压文件
cd到www路径后解压:tar -zxvf zyp1.tar.gz
6、查看压缩包内内容
命令:tar -tvf zyp1.tar.gz