# 【Git學習筆記】:使用Git指令上傳專案檔案到Github Git作為一種版本控制系統,起初為了更好管理Linux內核而開發。後來作為程式開發人員進行版本控制的工具,能讓程式的檔案或是文字檔推送到指定的儲存庫中,達到與他人共享的目的。<br> 至於Github則是基於Git的其中一種放置開源專案的平台。 而第一步我們要先在Github點選新增new repository後,可以進入以下畫面 ![Imgur](https://i.imgur.com/T6cocdM.png)<br> 依照上述的說明輸入專案名稱,最後選擇Create repository創建專案,新增一個新的專案 ![Imgur](https://i.imgur.com/WGAtLam.png)<br> 這裡可以看到有三大欄位,由上至下分別是從零到有創建一個專案(包含建立讀我檔案)、從現有檔案中上傳,以及從另一個網址複製到剛剛創立的專案(名稱我這裡打111) 這裡說說關於網址的部分,顧名思義就是專案在Github的網址,但其實Git是一種語言,Github作為其媒介,因使用者眾多而聞名,除了Github之外,還存在有Gitlab等使用Git來進行版本控制的工具。 除了http網址外,Github 還可以使用SSH位址進行上傳。倆著的操作大致相同,切換成SSH時第一個框框內的程式碼就會自動轉換為SSH ## 使用命令列(Command Line)進行操作 接著我們得回到電腦上進行操作,這時有兩個步驟可供選擇:<br> 1. 安裝完[Git](https://git-scm.com/downloads)後,使用Git的命令列(Command Line)進行操作。<br> 進入到專案的資料夾內,對著空白處點滑鼠右鍵,從右鍵選單中選擇Git Bash Here<br> ![GitBash](https://i.imgur.com/Tp7Iem7.png)<br> 進入後輸入 pwd 指令確認是否位於專案所在的資料夾。<br> ![GitCommand](https://i.imgur.com/IojR7HR.png) 2. 利用WindowsPowerShell,Win8之後內建的命令列(Command Line)進行操作<br> 對著開始功能表上的Windows圖示點選滑鼠右鍵,從右鍵選單中選擇WindowsPowerShell<br> ![WindowsPowerShell](https://i.imgur.com/iZKTMal.png)<br> 剛開啟WindowsPowerShell時,得先透過 pwd 指令確認,可以發現當前位置為C碟我的文件的路徑<br> 這時就需要輸入「cd(空格)"檔案的路徑"」將其切換到專案所在的資料夾<br> ![WindowsPowerShell](https://i.imgur.com/EqMEWd5.png) 接下來兩著的操作大致相同,因此以WindowsPowerShell做為示範。Git的概念是先從本機的資料夾建立索引後,暫存檔案、索引於記憶體內,接著輸入版本更新訊息及建立分支,確認無誤後再推送至遠端儲存庫。 關於分支部分,類似遊戲的存檔點,在開發階段時程式會有個最主要的版本分支為主線,可以設立多個支線,從主分支延伸出去,並以主分支的版本為基底,來增減功能或是調整程式,在開發完成後併入主分支,若中途失敗或突發狀況的話也不會影響到主分支運作。 第一步輸入 ```shell echo "專案名稱" >> README.md ``` 建立"讀我檔案",裡面的內容可以透過記事本進行修改,詳細語法[這裡有](https://markdownlivepreview.com/) 第二步輸入 ```git git init ``` 系統會在專案資料夾內建立一個隱藏的.git資料,用於暫存檔案及索引。 ``` PS E:\資料、文檔\0.文件\GitTechNote> git init Initialized empty Git repository in E:/資料、文檔/0.文件/GitTechNote/.git/ ``` 顯示檔案路徑及相關訊息就代表成功了 第三步輸入 ```git git add . ``` 空一格加上"."就表示新增所有檔案至暫存區,也可以輸入檔名來新增單個檔案。成功後不會跳出訊息,只有在失敗時才會出現錯誤訊息。 但可以隨時輸入git status來查看當前狀態<br> 另外透過輸入git log則可以顯示相關紀錄 ``` PS E:\資料、文檔\0.文件\GitTechNote> git status On branch master No commits yet Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: GitCommand.png new file: NewRepository.png new file: QuickSetup.png new file: README.md new file: Right.png new file: WinRight.png new file: WindowsPowerShell.png new file: GitTechNote.md" ``` 出現這訊息就表示所有檔案皆以新增至暫存區,但只會顯示英文,如果檔名有中文等其他種類字元則會以編碼顯示。 檔案新增至暫存區之後,接著要來建立版本資訊, ``` git commit -m "1st commit" ``` 輸入成功後,會跳出像是這樣的訊息 ``` PS E:\資料、文檔\0.文件\GitTechNote> git commit -m "1st commit" [master (root-commit) eaf9805] 1st commit 8 files changed, 65 insertions(+) create mode 100644 GitCommand.png create mode 100644 NewRepository.png create mode 100644 QuickSetup.png create mode 100644 README.md create mode 100644 Right.png create mode 100644 WinRight.png create mode 100644 WindowsPowerShell.png create mode 100644 GitTechNote.md ``` 目前我們將檔案新增至暫存區,並建立索引。下個步驟則是要來建立分支,分支名稱以main為例 ``` git branch -M main ``` 若單輸入branch可以觀看當前在甚麼分支 ``` PS E:\資料、文檔\0.文件\GitTechNote> git branch * main ``` 這樣就建立好一個分支了<br> 接著我們要輸入遠程庫的位置,來與專案資料夾進行連結 ``` git remote add origin https://github.com/"你的Github帳號"/"專案名稱".git ``` 建立連結後,接著要將專案推送至遠端版本庫origin,origin(遠端版本庫)/main(分支) ``` git push -u origin main ``` 成功後會出現以下訊息 ``` PS E:\資料、文檔\0.文件\GitTechNote> git push -u origin main Enumerating objects: 22, done. Counting objects: 100% (22/22), done. Delta compression using up to 12 threads Compressing objects: 100% (21/21), done. Writing objects: 100% (22/22), 218.01 KiB | 19.82 MiB/s, done. Total 22 (delta 9), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (9/9), done. To https://github.com/"你的Github帳號"/111.git * [new branch] main -> main branch 'main' set up to track 'origin/main'. ``` 此時重整Github頁面就會看到專案顯示在Github頁面上了 而日後有編輯或是作修改時,則是先使用add指令將檔案新增至暫存區,commit指令輸入版本訊息,最後使用git push推送,因為先前輸入過git push -u origin main,這裡使用git push便可。 但須要注意當前所在的分支(branch) ## 參考資料<br> - 以下是寫這篇文章前所參考的資料,有興趣的話也可以點進去看看,在此感謝各位的觀看<br> - 影片<br> [【git教學 #1】15分鐘學會git & github(附實例)](https://youtu.be/Zd5jSDRjWfA)<br> [拯救資工系學生的基本素養—如何用 Git & Github 與他人協作開發](https://youtu.be/AFMoQqH6t3A)<br> [这可能是你看过最通俗易懂的git介绍了 | 什么是git?它如何实现代码版本控制的?它是怎么工作的?还不懂git?赶紧看一看吧【设计师的100个前端问题-05】](https://youtu.be/N6YQlPuAamw)<br> - 文章<br> [用Git版本控制【Git的基本介紹】 | 連猴子都能懂的Git入門指南](https://backlog.com/git-tutorial/tw/intro/intro1_1.html)<br> [Git 面試題](https://gitbook.tw/interview)<br> [git add、git commit - 提交版本](https://w3c.hexschool.com/git/b9be5b1e)<br>