使用github 更新本地源码到阿里云 操作记录(linux)

来源:互联网 发布:菜鸟网络能上市吗? 编辑:程序博客网 时间:2024/06/01 10:30

使用github 更新本地源码到阿里云 操作记录


将本地虚拟机代码上传至github,并在阿里云clone下来,与本地更新代码、服务器同步一些操作记不牢,做记录如下


手动上传、克隆、push、pull,暂不使用钩子等进行自动同步。
不考虑版本回退、分支管理。
主要参考教程为廖雪峰老师的git指南


目录

  • 创建本地版本库(虚拟机)

  • 提交本地版本(虚拟机)

  • (虚拟机)上传到github

  • clone到本地(服务器端)

  • (虚拟机)本地更新源码至github

  • 服务器更新本地代码from github


0、git的安装

sudo apt-get install git

在阿里云的centos下我使用

yum install git

安装后需要执行

git config --global user.name "Your Name"git config --global user.email "email@example.com"

上述仅仅是个标识,就像qq起昵称一样


1、创建本地版本库(虚拟机)

创建仓库的命令:
(在项目目录project上一级,如work/project时,转到work文件夹下)

git init

上述命令建立了一个仓库,其中仓库文件为隐藏,ls命令不可见

2、提交本地版本(虚拟机)

第一步,告诉git 归它管的文件/文件夹(项目目录project,在work文件夹下,下同)

git add project

之后执行commit(表示准备提交到服务器前,本地已经做好了所有准备)

git commit -m "这里写版本更新说明,方便区分不同版本的异同,避免使用中文"

这里先提前注册好github帐号并在账户下新建一个项目(project)

此时在本地用户主目录下寻找 .ssh 目录,使用ls命令寻找是否存在id_rsa.pub文件 一般是没有的
执行

 ssh-keygen -t rsa -C "youremail@example.com"

再次执行ls发现文件存在,使用

more id_rsa.pub

可以查看文件内容

复制 形如 ssh-rsa 开头以及后续一堆字符,在github右上角寻找setting 在左侧寻找ssh相关的标签,add new 并复制进去
这一步是为了防止github中代码被随意修改

3、(虚拟机)上传到github

首先建立一个“origin”关联github和本地

git remote add origin git@github.com:github:帐号名(不是登录帐号)/项目名.git

接下来进行推送,推送前需要做好add 和 commit(之前已经操作过)

git push -u origin master

第一次执行会有警告,确认即可
上述代码表示将本地源码上传到github,分支为主分支(master),-u 表示远程库中master与本地master 关联
之后再次push(之后每次push之前都要add、commit)可以使用

git push origin master

以上需要注意的是 包括建立ssh key的过程和长传的过程,遇到问题考虑这几个方向

  • 权限问题,使用命令sudo su切换到root账户

  • 注意提交git时在git仓库位置(git init的位置)

  • 虚拟机在root帐号下commit失败,新建终端使用普通账户试下

4、clone到本地(服务器端)

首先在服务器端部署好环境,并找到ssh key并报存到github(与上同)

之后执行

git clone git@github.com:昵称/project.git

5、(虚拟机)本地更新源码至github

本地修改后
分别使用add 和 commit

add前后可以通过以下命令查看状态(可选)

git status

6、服务器更新本地代码from github

到仓库目录 使用

git pull

即可(注意是pull不是上文的push)

假如服务器源码也产生了变化
上述命令会报错(冲突了)

如果可以舍弃服务器端源码
分别执行

git reset --hardgit pull

如果不想舍弃源码,使用

git stashgit pullgit stash pop

不想舍弃源码要注意的东西很多,不在此详细探讨。

另外关于更新本地源码有两个相关的常用命令
git pull 和 git fetch
用法示例分别如下

Git fetch origin mastergit log -p master..origin/mastergit merge origin/master
git pull origin master

前者先将代码更新之前的所有准备工作做好,使用git log xxxxxxxxxx查看异同,再执行 git merge xxxxxxxx正式更新,前者更安全

后者相当于 fetch 和merge,更方便