github 知識點+命令 總結(最全,適合初學者)

一、git相關概念

1、git文件的三種狀態

  • committed 已提交 ,表示數據已經安全的保存在本地數據庫中
  • modified 已修改 ,表示修改了文件,但還沒保存到數據庫中
  • staged 已暫存 ,表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。

2、Git項目的三個工作區域:Git 倉庫、工作目錄以及暫存區域。

在這裏插入圖片描述
工作區 是對項目的某個版本獨立提取出來的內容。 這些從 Git 倉庫的壓縮數據庫中提取出來的文件,放在磁盤上供你使用或修改。
暫存區域 是一個文件,保存了下次將提交的文件列表信息,一般在 Git 倉庫目錄中。 有時候也被稱作`‘索引’’,不過一般說法還是叫暫存區域。
Git 倉庫 是 Git 用來保存項目的元數據和對象數據庫的地方。 這是 Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這裏的數據。

3、Git 工作流程

(1)在作目錄中修改文件。
(2)暫存文件,將文件的快照放入暫存區域。(git add)
(3)提交更新,找到暫存區域的文件,將快照永久性存儲到 Git 倉庫目錄。(git commit -m ‘’)

即:modified(工作目錄)–>staged(暫存區域)–>committed(Git倉庫)

工作目錄下的每一個文件都不外乎這兩種狀態:已跟蹤或未跟蹤。 已跟蹤的文件是指那些被納入了版本控制的文件,在上一次快照中有它們的記錄,在工作一段時間後,它們的狀態可能處於未修改,已修改或已放入暫存區。 工作目錄中除已跟蹤文件以外的所有其它文件都屬於未跟蹤文件,它們既不存在於上次快照的記錄中,也沒有放入暫存區。 初次克隆某個倉庫的時候,工作目錄中的所有文件都屬於已跟蹤文件,並處於未修改狀態。

編輯過某些文件之後,由於自上次提交後你對它們做了修改,Git 將它們標記爲已修改文件。 我們逐步將這些修改過的文件放入暫存區,然後提交所有暫存了的修改,如此反覆。所以使用 Git 時文件的生命週期如下:

在這裏插入圖片描述

二、Git倉庫配置

1、在自己的git上面創建一個名爲text的倉庫

2、在本地創建文件夾,打開Git Bash

3、創建一個名爲text的文件夾,設置用戶名稱和郵件地址,作爲一個標識。

4、git init

mkdir text
git config --global user.name "1623354901"
git config --global user.email [email protected]
#git init 把這個目錄變成git 可以管理的倉庫
git init

# 一旦使用 --global 選項,那麼該命令只需要運行一次,以後無論你在該系統上做任何事情,Git 都會使用那些信息。當想針對特定項目使用不同的用戶名稱與郵件地址時,可以在那個項目目錄下運行沒有 --global 選項的命令來配置。


這時候你當前testgit目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的,不要手動改動這個目錄裏面的文件,否則,會把git倉庫給破壞了
在這裏插入圖片描述

5、提交內容到倉庫

在text目錄下新建一個記事本文件 readme.txt 內容如下:11111111
(1)使用git add readme.txt將文件添加到暫存區

git add readme.txt

(2)使用命令git commit 將文件提交到倉庫

git commit -m "readme.txt"


(3)通過 git status 查看狀態,是否有文件未提交

在這裏插入圖片描述
修改readme.txt文件內容,再次使用git status查看結果

內容顯示文件已經被修改,未被提交

git diff readme.txt

在這裏插入圖片描述
如上可以看到,readme.txt文件內容從一行11111111改成 二行 添加了一行22222222內容。檢查內容修改無誤後,就可以提交到倉庫了,步驟和之前一樣

git add readme.txt
git status
git commit -m 'readme.txt增加了22222222'
git status

在這裏插入圖片描述

6、版本回退

在readme.txt文件中加入一行33333333

添加到暫存區,並提交到倉庫

查看歷史記錄

#顯示從最近到最遠的顯示日誌
git log
#將每次內容顯示爲一行
git log --pretty=oneline

在這裏插入圖片描述
在這裏插入圖片描述

版本回退

#回退到上一個版本
git reset --hard HEAD^
#回退到上上個版本
git reset --hard HEAD^^
#以此類推
#回退到前50版本
git reset --hard HEAD~50
#回退後再次回退到最新版本
git reset --hard版本號
#獲取版本號方法
git reflog

在這裏插入圖片描述

在這裏插入圖片描述

7、提交多個文件

們在readme.txt再添加一行內容爲4444444,接着在目錄下新建一個文件爲test.txt 內容爲test,我們先用命令 git status來查看下狀態,如下:
在這裏插入圖片描述

8、Git撤銷修改和刪除文件操作

(1)撤銷修改
在readme.txt文件中增加內容5555555555
在這裏插入圖片描述
撤銷此次操作方法
1>直接更改文件,add commit
2>恢復到上一個版本,使用git reset --hard HEAD^
3>gitcheck – file,丟棄工作區的修改
在這裏插入圖片描述
注意
readme.txt自動修改後,還沒有放到暫存區,使用 撤銷修改就回到和版本庫一模一樣的狀態

另外一種是readme.txt已經放入暫存區了,接着又作了修改,撤銷修改就回到添加暫存區後的狀態

例如,在文件中加入666666666,放到暫存區,在增加7777777777,不添加到暫存區,使用撤銷命令,查看內容,只把內容7777777777撤銷了

在這裏插入圖片描述
注意:命令git checkout – readme.txt 中的 – 很重要,如果沒有 – 的話,那麼命令變成創建分支了。

(2)刪除文件
在這裏插入圖片描述

三、遠程倉庫

1、github上面註冊github賬號
2、創建SSH Key,在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果有的話,直接跳過此如下命令,如果沒有的話,打開命令行,輸入如下命令:ssh-keygen -t rsa –C “[email protected]
在這裏插入圖片描述
這時候在.ssh目錄下看看有沒有公鑰(id_rsa.pub),私鑰(id_rsa)

在這裏插入圖片描述
3、登陸github,打開settings中的SSH and GPG keys,在Key文本框裏黏貼id_rsa.pub文件的內容。添加key,然後就能看到自己的key了

在這裏插入圖片描述
4、遠程同步
(1)創建一個新的倉庫,命名爲test

在這裏插入圖片描述
然後設置同步
在本地倉庫下運行

git remote add origin https://github.com/1623354901/test.git
#將本地倉庫分支master內容推送到遠程倉庫中去
# -u:Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。
git push -u origin master

在這裏插入圖片描述
在這裏插入圖片描述

以後在本地再做了修改之後,通過

git push origin master

把本地master分支的最新修改推送到github上了
5、創建與合併分支
原理:廖雪峯網站分支部分裏講解的很詳細

#創建分支
git checkout -b dev
#上邊命令相當於
#git branch dev
#git checkout dev
#查看當前分支
git branch

在這裏插入圖片描述

git branch命令會列出所有分支,當前分支前面會標一個*號。
然後,我們就可以在dev分支上正常提交,比如對readme.txt做個修改,加上一行:Creating a new branch is quick
然後提交:

git add readme.txt
git commit -m "branch test"

現在,dev分支的工作完成,我們就可以切換回master分支:

git checkout master

切換回master分支後,再查看一個readme.txt文件,剛纔添加的內容不見了!因爲那個提交是在dev分支上,而master分支此刻的提交點並沒有變:
在這裏插入圖片描述
在這裏插入圖片描述
現在,我們把dev分支的工作成果合併到master分支上:

git merge dev

在這裏插入圖片描述
git merge命令用於合併指定分支到當前分支。合併後,再查看readme.txt的內容,就可以看到,和dev分支的最新提交是完全一樣的。

合併完成後,就可以放心地刪除dev分支了:

git branch -d dev

在這裏插入圖片描述

6、解決衝突
新建一個分支feature1

git checkout -b feature1

修改readme.txt最後一行,改爲:
Creating a new branch is quick AND simple.
在feature1分支上提交:

git add readme.txt
git commit -m "AND simple"

切換到master分支:

git checkout master

在這裏插入圖片描述
在master分支上把readme.txt文件的最後一行改爲:
Creating a new branch is quick & simple.

git add readme.txt 
git commit -m "& simple"

現在,master分支和feature1分支各自都分別有新的提交,變成了這樣:
在這裏插入圖片描述
種情況下,Git無法執行“快速合併”,只能試圖把各自的修改合併起來,但這種合併就可能會有衝突

在這裏插入圖片描述
果然衝突了!Git告訴我們,readme.txt文件存在衝突,必須手動解決衝突後再提交。git status也可以告訴我們衝突的文件:
在這裏插入圖片描述
直接查看readme.txt的內容:
在這裏插入圖片描述
Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,我們修改如下後保存:Creating a new branch is quick and simple.
再提交
在這裏插入圖片描述
現在,master分支和feature1分支變成了下圖所示:
在這裏插入圖片描述
用帶參數的git log也可以看到分支的合併情況:
在這裏插入圖片描述
刪除feature1分支
7、分支管理策略
通常,合併分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支信息。

如果要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章