# FDCSC110 Apr1 Handout - Basic Git --- ## 甚麼是 Git **git** 是一種版本管理的概念, 主要用於程式碼的協作。 ## 為什麼需要 Git 因為每位工程師分配到的程式碼不同, 完成的時間也不一樣, 所以需要有東西來幫忙**合併**每個人寫的程式碼。 ## Git 的基本概念 可以把每次上傳的程式碼當作一個分枝, 上傳後的程式碼會被自動合併到當前的主分枝。 而會有一些人是專門審查程式碼的, 在大致看過程式碼的合理性後, 他們會將程式碼**合併**到整個專案的主分枝。 舉個例子 今天tree、rev、Hank 三個人在協作一個DanDanJudge的爬蟲, tree負責寫前端互動, rev負責寫爬蟲主程式, Hank負責寫網頁架構。 顯然這三個工作是完全可以分開做的, 因此在協作的過程中, 他們只要將程式碼分別傳到自己的分枝上 (tree、rev、Hank), 最後在由其中一人合併就可以了。 ## Git 指令 有很多指令, 這邊只教平常會用到的, 更詳細的教學可以[點擊這裡](https://git-scm.com/docs/git) ### git status 這是用來查看更改情況的指令 ```console git status ``` ### git branch 這是用來管理本地分枝的指令 #### 新增分枝 ```console git branch <branch-name> ``` #### 新增並切換分枝 ```console git branch -b <branch-name> ``` #### 切換分枝 ```console git checkout <branch-name> ``` ### git add 這是用來將更變提交至本地的**git** ```console git add <file-name> git add . ``` 如果參數是`.`的話,代表將所有更變提交。 ### git commit 這是用來將本地更變提交打包的指令 ```console git commit -m "<message>" ``` 每次的打包一定要包含一串字串來敘述的這次的變更。 ### git push 這是用來將打包提交至雲端的指令 ```console git push <remote> <branch> ``` 將`remote` 上的分枝 `branch` 上傳。 (通常 `remote` 都是 `origin`) ### git pull 這是用來將雲端程式碼合併至本地的指令 ```console git pull origin ``` 因為 `pull` 真的不常用,所以這裡指講合併自己的專案就好。 ### git clone 這是用來將雲端專案複製到本地的指令 ```console git clone <repository-url> ``` 在複製時有很多種網址格式可以用, 最常看到的有 `https` 和 `ssh`, `https` 在每次上傳時都要輸出帳密 (如果我沒記錯的話), 因此很少人用, 事實上 `Github` 已經宣布停止支援用 `https` 上傳程式碼 (下載還是可以的), 而 `ssh` 因為本身自帶金鑰, 所以不需要再輸入帳密, 只需要在帳號設定一次即可, 是比較常見的方法。 如果想要學 `ssh` 的可以來找我 (~~我會查給你看~~)。 ## 常見的 Git 雲端 有各位已經有的[Github](https://github.com/)、[Bitbucket](https://bitbucket.org/)、[Gitlab](https://gitlab.com/) 等等,我自己是用 `Github`。 ## 小結 雖然 `git` 在程式碼協作時很好用, 但在一個人實作專案時也是一個很好用的工具, 畢竟他的是**版本管理器**, 在程式出現嚴重bug時要復原還是很好用的。 最後提一下, 這個講義沒有講到如何解決`Merge Conflict`, 解決辦法非常簡單, 自己查一下就有了, 但樣成好習慣, 在寫之前記得先 `pull` 就可以避免了。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up