1. 程式人生 > >git的學習筆記

git的學習筆記

#git是什麼

Git可以說是最好用的,而且是最方便的分散式版本控制系統(如果你要是永遠保持在網路暢通的情況下,當我沒說這個說) 工作原理/流程: 可以分為四個區: Workspace : 工作區 Index / Stage : 暫存區 Repository : 倉庫區(或者本地倉庫) Remote : 遠端倉庫

為什麼選擇git

git首先是 分散式版本控制系統,每個人都的電腦就是一個完整的版本庫,這樣,也可以在沒網的情況下,去完成工作,如果多人,互相pull 就可以看到對比和修改的對比的地方。 無論windows還是linux都是傻瓜式的安裝,在這裡而且網上也有想關的教程。所以在這就不說明了

關鍵的如何操作

建議在bash的情況下,還有儘可能先看看git 的help 去檢視命令

  1. 首先要為這臺機器的所有git倉庫設定使用者名稱和郵箱(下面我是因為已經設定過了)設定全域性變數

  2. 建立版本庫 版本庫–其實就是你的專案名的資料夾,在這個資料夾裡面,git可以跟蹤任何檔案並且是任何時間,最重要的還可以"還原" 相當於初始化 我是因為在資料夾裡面直接右鍵開啟的bash,,所以很方便不是嗎 這時候,在這個資料夾,就會出現一個隱藏的.git資料夾,這個就是init後成功的證明,這個儘量不要動。 (1) 首先新增這個資料夾的檔案。或者使用 . 直接新增所有檔案。 新增 (2) 在第一步完成時候,你只是添加了,但是沒有提交到本地倉庫,你必須要 “commit” 下,提交到倉庫 提交到本地倉庫

    (3) 當你完成第二步後,,然後用git status 可以判斷自己是否已經commit成功。綠色代表成功,紅色代表沒有新增 檔案commit (4) 在這裡,版本控制只能看到檔案的變化,不能檢測到圖片或視屏的變化,只能判斷出來大小。 (5) 如果你改到某個檔案可以檢視下這個檔案到底改動了什麼 檔案變化 在提交的時候,記得檢視狀態,養成好的習慣,可以給自己方便很多, []

  3. 版本回退 如果你想回退你剛才的內容,你放心,這個是可以解決的。 [^2]我這裡已經做好多種修改

圖片

	  可以看到最後一次新增的內容和上一次新增的內容。。

如果你不想讓現實這麼多的內容可以命令 git log -pretty=oneline

(1) 版本回退使用; 第一種是 : git reset --hard HEAD^ 回退上個版本 。 第二種是: git reset --hard HEAD-100,用數字表示版本,進行回退版本。 在這裡插入圖片描述 在這裡插入圖片描述 如果你忘記了你想回復的版本號,需要檢視版本號: git reflog

  1. 理解工作區和暫存區的區別 (1) 工作區:就是你在電腦看到的目錄,或者你後面改變的任何東西。 (2) .git 這個是另外的,這就是版本庫,其中重要的是stage(暫存區),還有建立的第一個分支master 以及指標HEAD 在工作區和暫存區上面其實已經提到過了,就簡單就是git status 那個是紅色的和綠色的,綠色的就是在暫存區了

  2. 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

  1. 如果你已經在github上已經好的倉庫,方法還是像上面的方法一樣,只是命令不一樣而已。
  2. 如果你電腦沒有ssh的話,,必須要先在github加上你的電腦的私鑰,

http clone

  1. 如果是http,就不必了第二步的操作可以直接就可以clone 在這裡插入圖片描述

分支的管理

最重要的分散式管理,就是git裡面的每次提交都是串成一條時間先,這個時間先就是一個分支。如果是新建的倉庫,都只是有一條分支也是主分支。
HEAD可以說是不是指向提交,而是指向master
  1. 建立分支 在這裡插入圖片描述 git checkout 命令加上-b 表示建立並切換,所以,你就發現你的上面顯示資料夾的位置後面的藍色字變了色。

  2. 如果想要切換分支 在這裡插入圖片描述 git的分支都是分開處理,互不干涉,所以你在這個分支改變的東西,是不會再另外一個分支顯示出來的

  3. 能分一個分支,當然可以合併分支 在這裡插入圖片描述

  4. 分支完之後,如果不想要那個分支可以刪除 在這裡插入圖片描述 總結建立和合並分支命令如下: 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

  5. 如果你是多人來處理一個專案就回存在一個問題, 如果多人處理同一個檔案,就會出現衝突。那麼衝突怎麼辦。 (1) 先用cat檢視檔案的修改情況,判斷哪些內容是自己需要的

     		Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,其中<<<head是指主分支修改的內容,>>>>>fenzhi1 是指fenzhi1上修改的內容,我們可以修改下如下後儲存:</head是指主分支修改的內容,>
    
  6. 分支管理策略; 上面的合併分支是快速合併,就是不保留任何資訊,用git log 都看不到版本的資訊。 但是 帶引數 -no-ff 來禁用"Fast forward"模式,就可以保留分支的資訊 分支的策略就是:首先master主分支是穩定了,所以這個是不能改變的,而幹活實在新建的分支上改變的,等分支修改完畢後,才會合併主分支

bug分支

碰到問題,首先是應該在主分支建立一個分支來修復他,但是時間不夠了,git可以將當前工作現場“隱藏起來”。 git stash 命令 下面的步驟都是上面合起來的,建立分支,在分支上面修復bug,然後與主分支合併,刪除臨時分支 –上面提到的工作現場不是已經隱藏了,有兩種方法可以恢復: 1.git stash apply 恢復 或者 git stash drop刪除 2.一種是 git stash pop ,恢復的同時,刪除stash內容

多人協作

  1. 要檢視遠端庫的資訊,使用 git remote

  2. 檢視遠端庫的詳細資訊 使用 git remote -v (我這裡沒有空的庫,就不截圖了)

  3. 推送分支 什麼情況,要分支推送,1.是master分支是主分支,要與遠端同步2. 一些bug修復,不需要推送到遠端,合併到主分支,然後推送master

  4. 抓取分支 多人協作時,大家都會向主分支進行推送各自的修改, git checkout -b dev origin/dev 建立遠端的origin的dev分支到本地來 當你改完後, 這會就是一個問題,,你推送不上去檔案,因為已經有另外一個改動了,,所以你必須要先用git pull 把最新的提交 抓下來,然後在本地合併,解決衝突再推送,這樣就會成功了