iT邦幫忙

3

2013IT鐵人賽-16-git04-git基礎練習git pull 與第2裝置使用

git

2013IT鐵人賽-16-git04-git基礎練習git pull 與第2裝置使用

2013IT鐵人賽-16-git04-git基礎練習git pull 與第2裝置使用

在上一篇文章 2013IT鐵人賽-12-git03-git基礎練習git show 與 git diff 內我們討論了 git show 以及 git diff 的使用方法.

今天我們就來繼續討論 git 的其他基礎練習, 當初要使用 git 來練習, 主要就是 git 採取<span style="color: blue;">分散式的開發</span>以及在不同的平台上面都可以使用 git 來操作. 所以我們就來試試看使用第2個裝置來存取GitHub 上面的資料.

既然東西已經放在 GitHub 上面, 所以如果在家中的另外一台電腦或是筆電也要這個開發環境該如何呢?

首先我們在其他的電腦上面, 請參考之前的文章 2013IT鐵人賽-03-程式學習紀錄-git01-使用git與GitHub紀錄 來安裝git 環境.
( #zypper install git 以及 # zypper install git-daemon )

接下來將GitHub 上面的資料同步到第2個裝置
這邊我以我自己電腦的環境, 使用者是 max 為例子
(openSUSE 的使用者提示符號為 <span style="color: red;">></span> 其他的linux 系統為<span style="color: blue;">$</span>)
目前工作目錄在家目錄

pwd

/home/max

先建立工作目錄 /home/max/2013ironman

mkdir /home/max/2013ironman

進入到工作目錄

cd /home/max/2013ironman/

執行 git 初始化

git init

Initialized empty Git repository in /home/max/2013ironman/.git/

因為以後還是要使用原來的名字來傳遞資料, 所以還是要設定名字以及電子郵件

git config <span style="color: red;">--global</span> user.name "你的名字"
git config <span style="color: red;">--global</span> user.email "你的電子郵件"

設定遠端( GitHub ) 的repo設定

git remote add origin https://github.com/sakanamax/2013ironman.git <span style="color: red;">(這邊請用自己的 git 路徑)</span>

可以透過 git remote -v show 來觀察相關資訊( -v 代表顯示詳細資訊)

git remote -v show

origin https://github.com/sakanamax/2013ironman.git (fetch)
origin https://github.com/sakanamax/2013ironman.git (push)

接下來的部份就跟之前在建立repo 不一樣了, 我們要把遠端的容器複製過來
還沒進行之前, 先觀察一下目錄下的物件

ls -a

.  ..  .git

git <span style="color: red;">pull</span> origin master

remote: Counting objects: 53, done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 53 (delta 9), reused 50 (delta 6)
Unpacking objects: 100% (53/53), done.
From https://github.com/sakanamax/2013ironman
 * branch            master     -> FETCH_HEAD

這邊我們使用 pull 的方式將遠端的資料拉( pull )回來

再次觀察目錄下的物件

ls -a

.  ..  .git  java  README.md  ruby

這邊可以看到一個有趣的情形
在我的<span style="color: blue;">第2個裝置</span>(家中PC, 使用者為max)

ls java/

Basic_001_Helloworld.class     Basic_003_variablesAnnounce.class
Basic_001_Helloworld.java      Basic_003_variablesAnnounce.java
Basic_002_javaStructure.class  helloworld.class
Basic_002_javaStructure.java   helloworld.java

這邊有看到當初練習 java 實作所留下的 helloworld.java 以及 helloworld.class (請見2013IT鐵人賽-11-Java03-Java檔案的基本結構

git status

# On branch master
nothing to commit, working directory clean

原因為當初我們沒有使用 git rm 或是 git mv 的方式來處理, 只是使用檔案操作的方式來進行, 所以檔案還在 GitHub 上面.

觀察 EasyCloud 上面VM的狀況(原本<span style="color: red;">第1個裝置</span>)

ls java

Basic_001_Helloworld.class     Basic_002_javaStructure.java
Basic_001_Helloworld.java      Basic_003_variablesAnnounce.class
Basic_002_javaStructure.class  Basic_003_variablesAnnounce.java

使用 git status 觀察

git status

# On branch master
# Changes not staged for commit:
#   (use "git add/rm &lt;file>..." to update what will be committed)
#   (use "git checkout -- &lt;file>..." to discard changes in working directory)
#
# deleted:    java/helloworld.class
# deleted:    java/helloworld.java
#

接下來我們使用 git rm 來刪除這兩個檔案

git rm java/helloworld.java

rm 'java/helloworld.java'

git rm java/helloworld.class

rm 'java/helloworld.class'

再次觀察 git status 的輸出

git status

# On branch master
# Changes to be committed:
#   (use "git reset HEAD &lt;file>..." to unstage)
#
# deleted:    java/helloworld.class
# deleted:    java/helloworld.java
#

git add 以及 git rm 都一樣是要經過 git commit 才會生效的, 所以接下來我們來進行提交作業

git commit -m "Delete java helloworld.java and .class"

[master 16cb9f4] Delete java helloworld.java and .class
 2 files changed, 6 deletions(-)
 delete mode 100644 java/helloworld.class
 delete mode 100644 java/helloworld.java

發送到遠端的 GitHub

git <span style="color: red;">push</span> origin master

Username for 'https://github.com': 您的帳號
Password for 'https://sakanamax@github.com': 您的密碼
Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 349 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/sakanamax/2013ironman.git
   16f1565..16cb9f4  master -> master

這個時候可以到 GitHub 上面觀察檔案是否有被刪除
https://github.com/sakanamax/2013ironman/tree/master/java

接下來回到我們的第2個裝置

ls java/

Basic_001_Helloworld.class     Basic_003_variablesAnnounce.class
Basic_001_Helloworld.java      Basic_003_variablesAnnounce.java
Basic_002_javaStructure.class  helloworld.class
Basic_002_javaStructure.java   helloworld.java

這邊只要再次執行 git pull 來同步就可以了

git <span style="color: red;">pull</span> origin master

remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1)
Unpacking objects: 100% (3/3), done.
From https://github.com/sakanamax/2013ironman
 * branch            master     -> FETCH_HEAD
Updating 16f1565..16cb9f4
Fast-forward
 java/helloworld.class | Bin 428 -> 0 bytes
 java/helloworld.java  |   6 ------
 2 files changed, 6 deletions(-)
 delete mode 100644 java/helloworld.class
 delete mode 100644 java/helloworld.java

今天練習了第2個裝置的git, git clone, 以及 git pull 來從遠端容器同步 :-)

Fun with Day 16 ~


1 則留言

0
blackie1019i
iT邦新手 5 級 ‧ 2013-10-02 00:43:42

好扎實!!!飛

我要留言

立即登入留言