在本地开发并测试完一个项目之后需要做什么?需要上线!需要同步到服务器上!那怎样同步呢?当然是用Git和Github的组合!Git是一款版本控制工具,最初是由Linux的创始人Linus创造的,主要是用来对项目源码进行管理,可实现多人协同开发,离线开发。GitHub是世界上最大的程序员“交友网站”,是代码仓库,世界上很多的公司都在用GitHub进行代码托管,以及代码开源。本篇文章将整理由本地(MacOS系统下)通过Git+GitHub将源码同步到服务器的整个过程。

1.准备工作

  • 下载并安装好Git
  • 注册GitHub账号,创建一个仓库

2.创建本地仓库

  • 从终端进入到你的项目根目录下
  • 执行下面的命令初始化本地仓库
git init
  • 成功后可以发现根目录下多了一个.git的隐藏文件,这里面存储着git正常工作时所需要的所有信息
  • 然后设置本地仓库的签名信息,包括用户名和邮件,注意,这两个信息与GitHub上的账号信息一点关系都没有,只是起一个标识的作用,当你更新代码到GitHub上的时候,Github将用这两个信息来标识操作是你做的
git config --global user.name reborn
git config --global user.eamil reborn0502@163.com
  • 成功后可以在$home目录下的.gitconfig隐藏文件中查看此信息

  • 然后使用下面的命令对项目中的所有文件进行跟踪,跟踪后就可以时刻关注项目中每一个文件的变化了

# 对所有文件进行跟踪
git add .
# 对某个文件进行跟踪
git add filename
  • 如果你想查看当前仓库的状态,比如有哪些文件已被修改,有哪些文件没有被跟踪,你可以使用下面的命令
git status
  • 当你修改了某些文件之后,你可以使用下面的命令进行提交,提交到暂存区
git commit -m "此处写注释" -a

3.连接远程仓库

  • 从GitHub上复制你的仓库地址
  • 通过下面的命令将此地址添加到本地仓库中,并赋予一个别名(一般命名为origin)
# 添加命令
git remote add origin [GitHub地址]

# 查看命令
git remote -v
  • 继git commit命令之后,我们已经将被修改的文件存到了缓存区,接下来我们用下面的命令将缓存区的内容推送到GitHub
# origin是刚才给GitHub地址命的别名,master是分支名(创建本地仓库后默认的主分支名)
git push origin master
  • 刚开始会让你输入GitHub的账号密码,按提示填写即可
  • 如果你在创建GitHub仓库的时候,默认初始化了一个README.md的文件,在进行git push后你可能会遇到下面这个错误:
 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/mxdshr/git-learning.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.
  • 上面的错误大意是我本地的分支master和远程的master分支没有合并,两个仓库中有不同的内容,解决办法如下:
git pull origin master --allow-unrelated-histories

上面的操作是指将GitHub仓库中的README.md文件下载到本地仓库,以实现远程仓库和本地仓库的内容产生交集。

4.同步到服务器

  • 选择服务器中的一个空文件夹
  • 执行git init 创建本地仓库
  • 执行git config创建标签(建议不要与本地的签名信息相同)
  • 执行git remote add 添加GitHub仓库源
  • 执行git pull origin master将GitHub上的内容同步到服务器上

5.后续工作

至此,本地、GitHub、服务器三个地方的源码都可以同步了,以后对源码进行同步的时候一般只需要使用三个命令行就够了:

# 在本地将已经修改的文件提交到暂存区
git commit -m "notes" -a

# 将暂存区内容推到GitHub
git push origin master

# 将GitHub的源码拉到服务器(需在服务器执行此命令)
git pull origin master