無廢話Git——概念與本地伺服器提交
Git是什麼?
Git是一個開源的分散式版本控制系統(也可以叫工具或是軟體)。
版本控管工具對於開發人員來說不陌生, 像VSS,CVS,SVN,Perforce等。關於程式碼的版本控管工具及歷史, 可以參考:
程式碼控管工具比較
集中式與分散式
與其他的版本控管工具相比, Git 最大的特點就是分散式。
與分散式對應的是集中式, 也就是伺服器-客戶端的模式。這種模式的特點是有一臺中央的程式碼控管伺服器, 不同的開發機器作為客戶端從伺服器獲取程式碼和進行程式碼提交。
而對於分散式的Git來說, 每個客戶端的機器都可以作為程式碼控管的伺服器, 可以進行程式碼的檢出和上傳。
但是, Git 也有中央伺服器的概念,而且在大部分的狀況下都會使用到中央伺服器。
對於習慣集中式程式碼控管工具的開發者來說(比如Perforce), 可以這樣來理解集中式:如果在每臺機器的本地安裝一個Perforce 伺服器, 再到一臺共用的伺服器上架設一臺Perforce伺服器作為中央伺服器。程式碼先提交到本地的伺服器, 再從本地的伺服器彙總到中央伺服器。只是Perforce等工具沒有這樣的功能, Git 做到了。
因為本地也是伺服器, 也可以進行提交等動作, 所以不聯網也可以進行程式碼的提交和控管, 等到網路恢復才推送到中央伺服器。除此,Git 還支援多種協議和提交方式, 在一些Git的平臺上可以使用網頁的方式進行程式碼改動,提交和管理。
Git 的獲取與安裝
Git官方下載站點: https://git-scm.com/downloads
提供了Mac, Windows 和Linux三種版本。 目前最新版本是2.18.0.
以下介紹在Windows下的安裝和使用。
Windows 下下載的是.exe的可執行檔案, 直接雙擊安裝。
安裝完成,會有以下三個選單項:
- Git Bash Linux 命令列方式。 因為Git 最早是應用於Linux,有些命令需要在這個下面才能執行。
- Git CMD Window命令列方式。一般的Clone, init, add, commit等命令都可以使用這個方式執行。
- Git GUI 如果對命令列不感冒的話, 可以使用介面的方式來使用Git.
接下來,不考慮遠端服務,僅在本地伺服器中使用 Git.
本地伺服器中使用Git
開始使用之前, 先配置一下使用者名稱和郵箱。這個是作為提交程式碼的使用者標識。
Git CMD方式:
1. 在D盤中建立如下目錄:
D:\gitworkspace\project1
進入Git CMD, 切換到以上目錄。
執行Git Init
Init 是建立新的 Git 倉庫, 執行完成之後,目錄中會多出一個 .git 的隱藏資料夾。
有了這個目錄,就說明這個目錄下的程式碼進行了程式碼控管。在目錄中新增一個檔案 file1.txt
內容: first Line回到Git CMD, 輸入:git status
git status 命令用於檢視是否有修改
可以看到 Untracked files: file1.txt .
意思就是file1.txt這個檔案沒有被跟蹤。在Git CMD輸入: git add file1.txt
git add, 將該檔案新增到快取
git add 並不是直接提交程式碼到程式碼庫, 而是先放到一個快取區塊。
類似電腦儲存, 不是直接寫到硬碟,而是先放到快取。 如果要撤銷的話, 可以使用git rm 命名進行移除。
這裡也可以使用git status檢視一下狀態。
Changes to be committed: 有新的改動需要提交。
如何真正提交到庫, 接下來就是.- 在Git CMD輸入: git commit -m “file1 add”
-m 和後面雙引號的內容是提交需要給一些註釋。實際開發中這個註釋可能是規格標號或是任務標號。
- 在Git CMD輸入: git commit -m “file1 add”
到此, 新增一個檔案並提交到本地庫就可以了。如果對這個檔案進行修改, 比如增加一行內容:
second Line.
先使用git status 檢視一下改變,
modified: file1.txt 有檔案發生了改動。
接下來同樣使用
-git add file1.txt
-git commit -m “file1 modify”
進行提交。
Git GUI方式:
1. 在D盤中另外再建立一個目錄:
D:\gitworkspace\project2
2. 開啟Git GUI
3. 點選 “Create New Repository”
選擇上面的目錄路徑後, 點選Create按鈕
到project2目錄上看一下, 和使用init 命令列一樣, 同樣產 生了一個 .git 的隱藏資料夾。
4. 同樣是在目錄中新增一個檔案 file1.txt
內容: first Line
5.在Git GUI中點選一下 Rescan按鈕。
這個按鈕的作用就是掃描目錄下是否有檔案發生了變更。
6. 在Unstaged Changes區塊就顯示了 file1.txt
7. 點選 Stage Changed按鈕, 把這個檔案放入快取區。
8. 在Initial Commit message輸入註釋“file1 add”後, 點選Commit提交改動到本地庫。
改動檔案和新增檔案的操作大致類似。至此, Git GUI就完成了上述使用CMD方式同樣的操作。
暫存區(快取區)
上面提交程式碼操作上, 有一個快取區的概念。 也叫做暫存區。 英文常見叫做Stage , 也有稱作Index的。這是Git和SVN,Perforce等其他版本控管工具的一個大的不同之處。
開始介紹暫存區之前, 順便了解一下其他的術語。
工作區:就是本地工作的目錄, 也就是上面的project1, project2的目錄, 但是不包括 .git的隱藏目錄。
版本庫: 就是 .git 的隱藏目錄。
好了, 看一張圖:
- git add 把改動放到暫存區
- git commit 提交到版本庫
- 只有Commit才會才是版本號, 暫存區的檔案可以通過:
git reset HEAD – filename
撤回到工作區。
關於Git完整介紹,可以參考筆者的以下連結:
Git輕快學練戰
相關文章
- 無廢話Git——本地伺服器提交撤銷Git伺服器
- 無廢話專案經理
- 提交原本地專案到遠端gitGit
- 《無廢話XML》的一點筆記XML筆記
- 【GIT】使用Git命令視窗將本地工程提交至遠端GitHubGithub
- Git回滾本地已提交未推送的程式碼Git
- 有用的廢話
- Git跟蹤與提交檔案Git
- git概念與指令講解Git
- Git——提交Git
- 無廢話設計模式(11)結構型模式--代理模式設計模式
- 無廢話 apache+mysql+php+snmp+rrdtool+cacti 配置(轉貼)ApacheMySqlPHP
- 使用git初始化本地倉庫並提交到遠端分支Git
- minos 0 前(廢)言(話)
- 無廢話設計模式(7)結構型模式--裝飾模式設計模式
- 無廢話設計模式(9)結構型模式--享元模式設計模式
- 無廢話設計模式(14)結構型模式--狀態模式設計模式
- 重新學習Mysql資料庫1:無廢話MySQL入門MySql資料庫
- git 修改提交作者及提交日期Git
- git本地倉庫與GitHub的同步Github
- git 將本地專案提交到第三方簡單操作Git
- git pull 提示Not possible to fast-forward,無法提交也無法更新GitASTForward
- git提交規則Git
- Git 約定式提交Git
- Git 提交規範Git
- 無廢話設計模式(16)行為型模式--備忘錄模式設計模式
- 全程精髓無廢話,騰訊強推Redis深度筆記我粉了Redis筆記
- git(osx)上的一個git commit無法正確提交的問題GitMIT
- Git分支(本地)Git
- Git拆分commit提交GitMIT
- Git中撤銷提交Git
- 實現git版本控制中專案某一個檔案可以不提交,只在本地git生效,不影響線上gitGit
- github 丟失的本地提交Github
- git學習筆記(本地倉庫與github)筆記Github
- 無廢話設計模式(1)--簡單工廠、工廠方法、抽象工廠設計模式抽象
- 大話GitGit
- git撤銷已經提交到遠端伺服器的commitGit伺服器MIT
- git刪除本地分支命令 git怎麼刪除本地分支Git