git實戰13 – 將本地專案推送到遠端伺服器

Client 開發端

假設已經先在 Client 開發了一個專案,只有 Client 端使用 git 做版本控制,如果要傳到 Server 端建立一個新的專案的話
查看目前專案的來源資訊,應該是空的

git remote
origin

建立來源

git remote add origin git@遠端ServerIP:/home/git/project/phpmysql

目前位置在 php分支,推送後會報錯

git branch
  master
* php

git push origin php:php
git@遠端ServerIP's password:
fatal: '/home/git/project/phpmysql' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

原因是遠端並沒有先建立一個倉庫可以接受 Client端的推送

Server 端

先到 Server 端建立資料夾並建立倉庫

mkdir phpmysql
cd phpmysql
git init

Client 開發端

在 Client 端,重新推送一次

git push origin php:php
git@遠端ServerIP's password:
Counting objects: 6, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 639 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@遠端ServerIP:/home/git/project/phpmysql
 * [new branch]      php -> php

Server 端

在 Server 端,可以看到所推送的分支了

git branch
  php
git checkout php
Switched to branch 'php'
git branch
* php

Client 開發端

也可以推送 Client 端的 master 分支

git push origin master:master
git@遠端ServerIP's password:
Total 0 (delta 0), reused 0 (delta 0)
To git@遠端ServerIP:/home/git/project/phpmysql
 * [new branch]      master -> master

Server 端

可以看到現在也有 master 分支了

git branch
  master
* php

Client 開發端

查看目前專案的來源資訊

git remote
origin

查看目前專案的來源資訊位置,會出現取得(fetch)和推送(push)的位置,但位置是一樣的

it remote -v
origin  git@遠端ServerIP:/home/git/project/phpmysql (fetch)
origin  git@遠端ServerIP:/home/git/project/phpmysql (push)

如果要把某一台電腦當作 Git Server 來使用,控管所有分支,原則上這台 Server 上的所有專案都不會有 origin 位置,因為它就是被當成 origin 來傳送或接收分支
刪除來源指令

Client 開發端、Server 端

git remote rm origin
git remote