星期二, 10月 01, 2013

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 採取分散式的開發以及在不同的平台上面都可以使用 git 來操作.  所以我們就來試試看使用第2個裝置來存取GitHub 上面的資料.


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


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


接下來將GitHub 上面的資料同步到第2個裝置
這邊我以我自己電腦的環境, 使用者是 max 為例子
(openSUSE 的使用者提示符號為 > 其他的linux 系統為$)
目前工作目錄在家目錄
> 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   --global   user.name  "你的名字"
> git  config  --global  user.email  "你的電子郵件"


設定遠端( GitHub ) 的repo設定
> git  remote  add  origin  https://github.com/sakanamax/2013ironman.git (這邊請用自己的 git 路徑)


可以透過 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   pull   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


這邊可以看到一個有趣的情形
在我的第2個裝置(家中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的狀況(原本第1個裝置


# 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 觀察
nchc-vm:~ # git  status
# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <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 <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  push  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 上面觀察檔案是否有被刪除



接下來回到我們的第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  pull  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 ~

沒有留言: