---
# System prepended metadata

title: Git(Gitlab簡介+常用指令)
tags: [暑假]

---

---
title: Git(Gitlab簡介+常用指令)
tags: 暑假
---
Git(Gitlab簡介+常用指令)
===
## Gitlab介紹
### 簡介
GitLab是利用Ruby on Rails一個開源的版本管理系統
- 實現一個自託管的Git專案倉庫，可通過Web介面進行訪問公開的或者私人專案。
- 可以管理團隊對倉庫的訪問，它非常易於瀏覽提交過的版本並提供一個檔案歷史庫。
- 團隊成員可以利用內建的簡單聊天程式(Wall)進行交流。
- 它還提供一個程式碼片段收集功能可以輕鬆實現程式碼複用，便於日後有需要的時候進行查詢。

### 爲什麼要使用GitLab？
GitLab是集中服務器上管理git存儲庫的一個好方法。 GitLab讓您可以完全控制您的存儲庫或項目，並允許您自己決定是公共還是私有。

### Gitlab的服務構成
- Nginx：靜態web伺服器。
- gitlab-shell：用於處理Git命令和修改authorized keys列表。
- gitlab-workhorse: 輕量級的反向代理伺服器。
- logrotate：日誌檔案管理工具。
- postgresql：資料庫。
- redis：快取資料庫。
- sidekiq：用於在後臺執行佇列任務（非同步執行）。
- unicorn：An HTTP server for Rack applications，GitLab Rails應用是託管在這個伺服器上面的。

### 特徵
- GitLab免費託管您的(私人)軟件項目。
- GitLab是管理Git存儲庫的平臺。
- GitLab提供免費的公共和私人存儲庫，問題跟蹤和維基。
- GitLab是Git之上的一個用戶友好的Web界面層，它提高了使用Git的速度。
- GitLab提供了自己的持續集成(CI)系統來管理項目，並提供用戶界面以及GitLab的其他功能。
### 優點
- GitLab提供了GitLab Community Edition版本，供用戶在他們的代碼所在的服務器上進行定位。
- GitLab免費提供無限數量的私人和公共存儲庫。
- 程式碼片段可以共享項目中的少量程式碼，而不是共享整個項目。
### 缺點
- 在推拉(push/pull)倉庫時，它並不像GitHub那麼快。
- 從一個頁面切換到另一個頁面時，GitLab界面需要時間。

### [GitLab安裝](https://www.1ju.org/gitlab/gitlab-installation)

----

## 常用指令
我想先打上我實作上學習到常用到的
- git init
建立新的本地端 Repository。

- git clone [Repository URL]
複製遠端的 Repository 檔案到本地端。
 - git status
 檢查本地端檔案異動狀態
 >可以確認有無成功push或是衝突解決等等..
 - git add [檔案或資料夾]
 將指定的檔案（或資料夾）加入版本控制。用 git add . 可加入全部 
 >把檔案交給 Git ，讓 Git 開始「追蹤」目錄，此時內容加到暫存區
 - git commit 
 提交（commit）目前的異動。
 >將暫存區的內容提交到儲存庫（Repository）保留，代表檔案能夠完整永久保存。
 >我透作實作發現到在我們執行 git commit 指令時，先前都會先執行一次 **git add** 指令。這是因為「**git commit 只會處理暫存區裡的內容**」，也就是說如果今天新增檔案或是更改什麼動作，沒有先使用 **git add** 指令把檔案提交到**暫存區**，那麼 **git commit 指令就不會有所內容可以執行動作。**
 :::warning
**補充**｜覺得每次提交都要經過 git add 在使用 git commit 覺得很麻煩怎麼辦？

git commit 裡可以搭配使用 -a 參數，如此一來就即使沒有先使用 add 也能完成 Commit 的動作囉！

`$ git commit -a -m 'added new benchmarks'`

但是要**注意**這種方式，只能用於**已經存在於儲存區 （Respository）裡的檔案有效**，也就是已經有在儲存區但有重新更新的檔案，對於新加入的檔案（Untracked file）是無法執行的
 :::
 - git commit -m "修改記錄"
 引號裡面代表註解，告訴我們這一次 Git 做了什麼更新、新增什麼到本地端。
 - git log
 查看先前的 commit 記錄。
 - git push
將本地端 Repository 的 commit 發佈到遠端。
- git checkout
用於切換分支或恢復工作樹文件
>在實作上我透過切換分支再解決衝突問題
---
- git push origin [BRANCH_NAME]
發佈至遠端指定的分支（Branch）

- git branch
查看分支。

- git branch [BRANCH_NAME]
建立分支。

- git checkout [BRANCH_NAME]
取出指定的分支。

- git checkout -b [BRANCH_NAME]
建立並跳到該分支。

- git branch -D [BRANCH_NAME]
強制刪除指定分支（須先切換至其他分支再做刪除）。

- git reset --hard [HASH]
強制恢復到指定的 commit（透過 Hash 值）。

- git branch -m <OLD_BRANCH_NAME> <NEW_BRANCH_NAME>
修改分支名稱。


#### 這裡基本看完後就可以來實際練習看看[下一篇Git實際練習(Gitlab)](https://hackmd.io/@mMibszW4TNyvPRQXo1dJYQ/Bkl7EGBxs)
----
### 學習參考網頁
:::info
[常用指令](https://hellojs-tw.github.io/git-101/cheat-sheet.html)
[]()
[]()
:::