git的學習筆記
#git是什麼
Git可以說是最好用的,而且是最方便的分散式版本控制系統(如果你要是永遠保持在網路暢通的情況下,當我沒說這個說) 工作原理/流程: 可以分為四個區: Workspace : 工作區 Index / Stage : 暫存區 Repository : 倉庫區(或者本地倉庫) Remote : 遠端倉庫
為什麼選擇git
git首先是 分散式版本控制系統,每個人都的電腦就是一個完整的版本庫,這樣,也可以在沒網的情況下,去完成工作,如果多人,互相pull 就可以看到對比和修改的對比的地方。 無論windows還是linux都是傻瓜式的安裝,在這裡而且網上也有想關的教程。所以在這就不說明了
關鍵的如何操作
建議在bash的情況下,還有儘可能先看看git 的help 去檢視命令
-
首先要為這臺機器的所有git倉庫設定使用者名稱和郵箱(下面我是因為已經設定過了)
-
建立版本庫 版本庫–其實就是你的專案名的資料夾,在這個資料夾裡面,git可以跟蹤任何檔案並且是任何時間,最重要的還可以"還原" 我是因為在資料夾裡面直接右鍵開啟的bash,,所以很方便不是嗎 這時候,在這個資料夾,就會出現一個隱藏的.git資料夾,這個就是init後成功的證明,這個儘量不要動。 (1) 首先新增這個資料夾的檔案。或者使用 . 直接新增所有檔案。 (2) 在第一步完成時候,你只是添加了,但是沒有提交到本地倉庫,你必須要 “commit” 下,提交到倉庫
-
版本回退 如果你想回退你剛才的內容,你放心,這個是可以解決的。 [^2]我這裡已經做好多種修改
可以看到最後一次新增的內容和上一次新增的內容。。
如果你不想讓現實這麼多的內容可以命令 git log -pretty=oneline
-
理解工作區和暫存區的區別 (1) 工作區:就是你在電腦看到的目錄,或者你後面改變的任何東西。 (2) .git 這個是另外的,這就是版本庫,其中重要的是stage(暫存區),還有建立的第一個分支master 以及指標HEAD 在工作區和暫存區上面其實已經提到過了,就簡單就是git status 那個是紅色的和綠色的,綠色的就是在暫存區了
-
GIt 撤銷修改和刪除檔案操作 (1) 撤銷修改
如果你提交的內容發現有問題,你可以做下面的操作進行撤銷 1.直接在檔案更改然後commit 2.就是恢復上一個版本 3.就是撤銷工作區的修改了:git checkout --file (這些可以自己嘗試了,會更加記得牢固)
git checkout --file 如果不加-- 命令就是建立分支的命令了 (2)刪除檔案 直接使用rm 加檔名就可以刪除 或者在工作區刪除然後commit
遠端倉庫
上傳專案到github 一共有兩種方法, 1.一種是利用ssh key 進行連線,這種方法是很安全的, 2.第二種方法是http就是,雖然這種方法不安全是,但是非常的方便。 這個自己選擇
ssh key連線
1.首先建立ssh key: (如果你使用者主目錄有.ssh 這個目錄就可以跳過這步了)
ssh-keygen -t rsa –C “[email protected]
2.然後再github加入自己的電腦的私鑰。 記得在這裡選在ssh金鑰就行了 3.現在github已經弄好了,,然後再git上面建立一個新的倉庫,然後複製那個倉庫的ssh金鑰就行了。 4.如果上面都已經成功了 ,那麼在本地的倉庫就行
git remote add origin ssh金鑰
5.然後你就可以進行最終的一步了就是push專案到github了。
git push -u origin master
把本地倉庫分支master內容推送到元倉庫去
第一次要加上u是讓本地的master分支與遠端的master關聯起來 然後你就可以進行日常push了,
HTTP方式下push專案
這個對於上面那個方法是很簡單的,只需要複製http的網址
然後 就可以執行這個命令了,直接就可以上穿專案了
從遠端庫克隆
ssh clone
- 如果你已經在github上已經好的倉庫,方法還是像上面的方法一樣,只是命令不一樣而已。
- 如果你電腦沒有ssh的話,,必須要先在github加上你的電腦的私鑰,
http clone
- 如果是http,就不必了第二步的操作可以直接就可以clone
分支的管理
最重要的分散式管理,就是git裡面的每次提交都是串成一條時間先,這個時間先就是一個分支。如果是新建的倉庫,都只是有一條分支也是主分支。
HEAD可以說是不是指向提交,而是指向master
-
建立分支 git checkout 命令加上-b 表示建立並切換,所以,你就發現你的上面顯示資料夾的位置後面的藍色字變了色。
-
如果想要切換分支 git的分支都是分開處理,互不干涉,所以你在這個分支改變的東西,是不會再另外一個分支顯示出來的
-
能分一個分支,當然可以合併分支
-
分支完之後,如果不想要那個分支可以刪除 總結建立和合並分支命令如下: 1. 檢視分支 :git branch 2.建立分支: git branch name 3.切換分支 : git checkout name 4.建立+切換分支: git checkout -b name 5.合併某分支到當前分支:git merge name 6.刪除分支: git branch -d name
-
如果你是多人來處理一個專案就回存在一個問題, 如果多人處理同一個檔案,就會出現衝突。那麼衝突怎麼辦。 (1) 先用cat檢視檔案的修改情況,判斷哪些內容是自己需要的
Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,其中<<<head是指主分支修改的內容,>>>>>fenzhi1 是指fenzhi1上修改的內容,我們可以修改下如下後儲存:</head是指主分支修改的內容,>
-
分支管理策略; 上面的合併分支是快速合併,就是不保留任何資訊,用git log 都看不到版本的資訊。 但是 帶引數 -no-ff 來禁用"Fast forward"模式,就可以保留分支的資訊 分支的策略就是:首先master主分支是穩定了,所以這個是不能改變的,而幹活實在新建的分支上改變的,等分支修改完畢後,才會合併主分支
bug分支
碰到問題,首先是應該在主分支建立一個分支來修復他,但是時間不夠了,git可以將當前工作現場“隱藏起來”。 git stash 命令 下面的步驟都是上面合起來的,建立分支,在分支上面修復bug,然後與主分支合併,刪除臨時分支 –上面提到的工作現場不是已經隱藏了,有兩種方法可以恢復: 1.git stash apply 恢復 或者 git stash drop刪除 2.一種是 git stash pop ,恢復的同時,刪除stash內容
多人協作
-
要檢視遠端庫的資訊,使用 git remote
-
檢視遠端庫的詳細資訊 使用 git remote -v (我這裡沒有空的庫,就不截圖了)
-
推送分支 什麼情況,要分支推送,1.是master分支是主分支,要與遠端同步2. 一些bug修復,不需要推送到遠端,合併到主分支,然後推送master
-
抓取分支 多人協作時,大家都會向主分支進行推送各自的修改, git checkout -b dev origin/dev 建立遠端的origin的dev分支到本地來 當你改完後, 這會就是一個問題,,你推送不上去檔案,因為已經有另外一個改動了,,所以你必須要先用git pull 把最新的提交 抓下來,然後在本地合併,解決衝突再推送,這樣就會成功了