Git學習筆記記錄
1.Git是目前世界上最先進的分佈式版本控制系統。
2.Git是由創建了Linux系統的大佬Linus創建的。
3.CVS及SVN都是集中式的版本控制系統,而Git是分佈式版本控制系統。
那分佈式版本控制系統與集中式版本控制系統有何不同呢?
首先,分佈式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因爲版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
和集中式版本控制系統相比,分佈式版本控制系統的安全性要高很多,因爲每個人電腦裏都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裏複製一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法幹活了。
在實際使用分佈式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因爲可能你們倆不在一個局域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分佈式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。
4.Git在各操作系統中的安裝與配置-安裝Git
Git操作 | 對應含義 |
---|---|
git init | 初始化Git倉庫 |
git add | 添加文件 |
git commit -m | 提交併註釋 |
git status | 查看工作區狀態 |
git diff | 查看修改的內容 |
5.HEAD指向的版本是當前版本。
Git操作 | 對應含義 |
---|---|
git log | 查看提交歷史 |
git reflog | 查看命令歷史 |
git reset –hard | 重置爲commit_id版本 |
6.工作區和暫存區,git add命令實際上就是把要提交的所有修改放到暫存區(Stage)。
版本庫(Repository)
工作區有一個隱藏目錄.git,這個不算工作區,而是Git的版本庫。
Git的版本庫裏存了很多東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。
需要提交的文件修改通通放到暫存區,然後,一次性提交暫存區的所有修改
7.Git跟蹤並管理的是修改,而非文件。
Git操作 | 對應含義 |
---|---|
git checkout – file | 丟棄工作區中的修改 |
git reset HEAD | 丟棄暫存區中的修改 |
git rm | 刪除一個文件 |
8.遠程倉庫、配置SSH-遠程倉庫
Git操作 | 對應含義 |
---|---|
git remote add origin git@server-name:path/repo-name.git | 關聯一個遠程庫 |
git push origin master | 推送master分支內容 |
git push -u origin master | 推送並建立關聯 |
git clone git@server-name:path/repo-name.git | 克隆一個本地庫 |
git branch | 查看分支 |
git branch | 創建分支 |
git checkout | 切換分支 |
git checkout -b | 創建+切換分支 |
git merge | 合併某分支到當前分支 |
git branch -d | 刪除分支 |
git branch -D | 強行刪除分支 |
git push origin master | 推送master分支內容 |
git push origin master | 推送master分支內容 |
9.合並存在衝突時,手動解決衝突後再提交。
Git操作 | 對應含義 |
---|---|
git stash | “儲藏”當前工作現場 |
git stash list | 查看stash列表 |
git stash apply | 恢復stash |
git stash drop | 刪除stash |
git stash pop | 彈出棧頂的stash(恢復+刪除) |
10.多人協作的工作模式-多人協作
Git操作 | 對應含義 |
---|---|
git remote -v | 查看遠程庫信息 |
git checkout -b branch-name origin/branch-name | 在本地創建和遠程分支對應的分支 |
git branch –set-upstream-to=origin/branch-name branch-name | 建立本地分支和遠程分支的關聯 |
11.rebase操作可以把本地未push的分叉提交歷史整理成直線,使得我們在查看歷史提交的變化時更容易。
Git操作 | 對應含義 |
---|---|
git tag | 查看所有標籤 |
git tag | 新建一個標籤(默認爲HEAD) |
git tag commit_id | 新建一個制定commit_id的標籤 |
git tag -a -m “blablabla…” | 指定標籤信息 |
git push origin | 可以推送一個本地標籤 |
git push origin –tags | 推送全部未推送過的本地標籤 |
git tag -d | 刪除一個本地標籤 |
git push origin :refs/tags/ | 刪除一個遠程標籤 |
12.忽略某些文件時,需要編寫.gitignore。
13.配置別名、配置文件、搭建Git服務器-配置別名 / 搭建Git服務器
IDEA中使用git對應的操作
以下均爲個人理解,如有不當之處,有勞您指出,感謝!
圖標1:Commit Directory = git add + git commit
圖標2:Add = git add
圖標3:與其他分支作比較
圖標4:Show History = git log
圖標5: Revert = git reset HEAD / git checkout – file
這塊操作名稱與Git上的指令相同,就不繼續敘述了
這裏可以提一下 Fetch 與 Pull 的區別是什麼?
公式: Pull = Fetch + Merge
Fetch 只拉取下來,不自動合併,Pull拉取下並自動合併。
IDEA界面中,右下角處也可以操作Git:
選擇需要操作的項目
圖標1:創建新分支
圖標2:本地的分支列表
圖標3:遠程倉庫中的分支列表
例如操作:如何拉取這個項目中其他人分支的代碼?
1.在遠程倉庫分支列表(Remote Branches)中,找到別人的分支名。
2.Checkout as new local branch - 在本地創建並關聯
3.叉會腰,休息一會….. 完成~