iT邦幫忙

0

Git & GitHub (1) 最初階的基本操作-至少先做成功一次吧

  • 分享至 

  • xImage
  •  

[Git 自己理解說明]

  1. 在自己的電腦( =本機 = Local端) 開一個 Repository(".git"檔), 之後這個地方的檔案就都可以 add,commit,push到GitHub中
  2. Git有自己的Git Bash, 就像Window的cmd(命令提示字元)一樣, 可以使用指令來操作平常使用滑鼠在做的事情
  3. 承上2, 不過Git Bash所使用的指令是 Linux的指令

[GitHub 自己理解說明]

  1. 類似Google Drive 也就是雲端硬碟, 為什麼要這樣做?
    a. 當使用者在開發程式時, 可能在不同地方開發, 如果每次開發都要儲存在硬碟或USB, 帶到另外一個地方再抓出來, 有點麻煩
    b. 當多個使用者一起開發, 其實他們正在開發同一個項目, 只是經過拆分後, 負責的內容/進度可能都不相同, 並且他們可能在不同的時間/地點開發, 但開發完後需要整合在一起. 以誰的版本為主呢? 放到誰那邊做整合呢? 此時,就是GitHub應用的場景

[名詞說明]

  • .git (本地檔), 創建在本地資料夾的檔案,有這個才能上傳此資料夾的檔案到GitHub中
  • Repository (資料夾),存放所有檔案的地方 (in GitHub)
  • Commit (快照),保存歷史紀錄 (存檔)
  • Branch (分支), 分成
    • Master branch: 主程式
    • Feature branch: 複製出來修改的程式

[大致流程步驟]

  1. 到Git官網下載檔案 (我都選預設安裝, 更改安裝設定請自行上網查閱資料)
  2. 去GitHub網站 新增帳號 並 登入
  3. 進行下面描述的 "Git&GitHub操作步驟"

★[Git&GitHub操作步驟]

  1. 在本機進入資料夾 (此資料夾內容為想要上傳至GitHub的檔案)

  2. 右鍵 "Git Bash Here"

  3. ls:查看所在地有甚麼檔案

  4. pwd:查看目前所在位置

  5. 事前作業(設置用戶信息)

    • git config --global user.name "Robbert"
    • git config --global user.email "abc@gmail.com" > 目前認知這兩個不太重要隨便輸入
  6. git status:

    • "fatal: not a git repository (or any of the parent directories): .git"
    • 顯示沒有.git在目前位置
  7. git init:創建repository

    • git status:"On branch master" 在master這個主分支
    • No commits yet > 目前沒有任何快照版本
    • [Hint] rm xxx:可以刪除此資料夾的檔案 (ex: rm GitA.txt)
    • [Hint] rm -fr .git:可以刪除.git
  8. 在目前所在位置創建檔案

    • 右鍵 > 新增 > "GitA.txt"
    • git status:發現GitA.txt為紅色, 代表在這repository中, 此檔案還沒加入成為 Git所追蹤的檔案
    • 為什麼要追蹤? 追蹤後Git才有機會知道 這檔案的變化及版本(存檔功能)
  9. git add "GitA.txt":將檔案加入追蹤

    • git status:此時看到GitA.txt已經變成綠色,代表已經加入追蹤
    • [Hint] 若資料夾內有 多個 檔案需要加入 > git add . (代表加入這資料夾的所有檔案)
  10. git commit -m "v1": 操作存檔功能

    • 加入 "-m" 就可以不用開啟文字編輯器 (vi)
    • 將此次存檔命名為 "v1"
    • git log:查看現在有哪些commit
    • git status:發現 "GitA.txt" 不見了 (被commit過後,直到下次更改檔案前,都不會出現(視為已經存檔))
  11. 開啟 "GitA.txt" 修改裡面內容

    • ex: 加入文字 "It's cool" > save&close
    • git status:會發現 "GitA.txt" 又出現了
  12. git add "GitA.txt":有修改過檔案,則要重新add ★★★

    • git commit -m "v2"
    • git log:會發現裡面有兩個commit(v1和v2)
  13. GitHub創建 Repository

    • 創建GitHub帳號 > 右上角"+"號 > New repository (ex: repository name = Tutorial)
    • 選擇"Public" > "Add a README file"隨便要不要勾選
    • 找到創建的repository > 點入 > 點選"Code"按鈕 > 複製HTTPS的連結 (ex: "https://github.com/你的GitHub帳號名稱/Tutorial.git")
    • [Hint] 在該repository可以找到刪除的方法 (上面Tab > "Settings")
  14. git remote add origin https://github.com/你的GitHub帳號名稱/Tutorial.git:從Local端連結到 GitHub的repository

  15. git push -u origin master:推到GitHub的origin master

    • [Hint] "-u" 會把預設的remote設成orgin, 未來push若不指定remote,則都會推到origin
    • 再次 git push origin master > 會顯示所有東西都已經上傳
    • 此時再次更改local file "GitA.txt"的內容
  16. 再次重跑Git中的檔案

    • git stauts:發現 "GitA.txt"已經被編輯過, 所以需要再重跑檔案
    • git add .
    • git commit -m "v3"
    • git push (因為上面有設定 git push -u origin master, 所以這邊可以只用 git push, 就可以傳到上面設定的地方)
  17. 完成

    • 網頁打開GitHub,並重新整理
    • 看到有 "2 branches"
      • 一個叫做 main branch > 剛創repository時就會產生的
      • 一個叫做 master branch > 上述操作所產生的
      • 切換到 master branch > 看到"GitA.txt"已經上傳,並且旁邊有個 "v3"
      • 再往右邊看會有上傳的時間,時間上面有一個 "3 commits" (因為剛剛總共commit了三次)
      • 上述總共commit,push分別幾次?
        • commit: 3次
        • push: 2次 (第一次push上傳了 "v1","v2")(第二次push上傳了 "v3")
  18. (額外) 如何在不同電腦取出GitHub的內容操作>

=====
待補

  • 不同版本合併
    • Branch
    • git pull
  • 補流程說明圖

=====
未解疑問

[補充]
若某次commit錯誤, 可使用 git reset --soft commit id 來回到某次commit (--soft是回到不刪除, --hard是回到並刪除之後的)
[疑問]
(尚未解決) 若刪除 commit, 會出現版本不一的問題 > git pull 合併 > 但就會又跑出刪除的commit

=====
Git指令說明

[查詢功能]

  • git --version 查看下載的git版本
  • git status 檢查所在檔案狀態(只顯示有更改的部分,commit後若沒有更改,則不會出現)
  • git log 查看現在有哪些commit
  • git remote 查詢現在連到哪個GitHub

[正常git加入檔案流程]

  • git init 在local端創建 repository
  • git add "GitA.txt"
  • git commit -m "xxx"
  • git remote add origin "github.com/xxx/Tutorial.git
  • git push origin master

=====
ref:
tedsieblog.wordpress.com/2017/01/19/basic-git-commands

後話:
上述是經過學習youtuber影片,上網爬文章後自行得出的結論.
可能會有許多錯誤,若有發現請各路高手隨時糾正.
這個筆記是給我自己看,所以紀錄的有點亂,但還是希望可以幫助到地球上的任意一個人也好,請多包涵


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言