我的github Git學習資源

2021-08-03 01:18:58 字數 4848 閱讀 6826

我的github&&git學習資源

分享兩篇文章:

第二篇如下,在他人的基礎上修改而來:

git是一款免費、開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的專案。

github 是乙個面向開源及私有軟體專案的託管平台,因為只支援 git 作為唯一的版本庫格式進行託管,故名 github。

我們要協同開發乙個專案就可能有這樣的需求:

每個人都可以得到專案的copy。

把自己負責的部分開發完成之後提交**到專案源倉庫進行合併。

git就是這樣一款控制本地**倉庫的軟體,github就是我們存放專案的平台,每個人都可以從中獲取專案copy和提交**。

git使用基礎教程

1.安裝git

2.建立本地**倉庫

2.1 安裝完成之後右擊滑鼠你會發現多了兩個選項,分別是「git gui here」和「git bash here」乙個是圖形化介面;乙個是命令列方式。不同版本的git可能有所不同,大家隨機應變,不過命令都是相同的,選擇「git bash here」,開啟之後是這個樣子

2.2 首先應該配置一下自己的身份,這樣在提交**的時候git就知道是誰提交的了,命令如下所示(其中加粗部分是自己的資訊):

git config –global user.name 「yourname」

git config –global user.email 「youremail」

2.3 配置完成之後你還可以用同樣的命令來檢視是否配置成功,只需要將最後的名字和郵箱位址去掉即可,下圖是我的git示例

2.4 身份配置完成之後我們就可以開始建立**倉庫了,這裡為了演示我建立了乙個android工程,名字叫做learngit,工程路徑及檔案如下所示:

建立**倉庫需要先進入到專案所在目錄,可以在bash中使用cd命令,也可以使用windows的資源管理器先進入到專案目錄下然後右擊–git bash here,就是上圖中在工程資料夾下空白的地方右擊–git bash here,我一般傾向使用第二種。

然後在專案所在目錄下輸入如下命令:

git init

可以看到**倉庫建立完成後會在本目錄下生成乙個隱藏的.git資料夾,這個資料夾就是用來記錄本地所有的git操作的,如果想要刪除本地倉庫,只需要刪除這個資料夾就行了。

3.提交本地**

3.1 **倉庫建立完成之後就可以提交**了,注意,這裡的提交是指提交到本地**倉庫,並不是提交到github。

乙個點號」.」代表的是本目錄,熟悉linux命令的同學對此應該並不陌生,所以我們可以使用如下命令將本目錄所有檔案新增進來:

git add .

3.2 將要提交的檔案新增進來之後使用如下命令執行提交操作:

git commit -m 「first commit.」

-m引數用來加上提交的描述資訊,這個是必須的,沒有描述資訊的提交被認為是不合法的。這樣執行兩條命令之後所有的**就已經成功提交了!

4.檢視修改內容

有時候我們可能忘記自上一次提交過**之後修改過什麼東西了,這種情況下我們就可以使用git status命令來檢視自上次提交後專案改動的內容。

現在我對learngit專案中的**做一點改動,mainactivity的布局檔案activity_main.xml初始內容如下所示,這些是建立專案的時候自動生成的:

我把布局檔案中的textview刪掉然後新增乙個button

儲存之後執行git status命令,結果如下所示:

git status

可以看到git提示我們activity_main.xml檔案被修改了。那麼怎樣看到具體更改的內容呢,這就要借助另外乙個命令了,執行git diff命令,結果如下:

git diff

可以看到刪去的內容用紅色字型標識並且前面有減號,增加內容用綠色字型標識並且前面有加號,由於中間android:layout_width=」wrap_content」一句在更改前後內容和位置都相同,所以git認為它沒有變動,用白色字型標識。

5.撤銷未提交的修改

5.1 有時候我們的**可能寫得過於草率,以至於原本正常的**被改出了bug,這個時候只要**還未提交,我們就可以借助git checkout 《檔案位址》命令來撤銷修改,這個有點像恢復系統備份,用法如下所示:

git checkout 《資料夾》

在執行git checkout之後輸入git status檢查一下,可以看到確實撤銷了修改。不過這種方式只適用於還沒有執行過add命令的檔案。

5.2 如果某個檔案已經被執行了add命令,這種方式無法撤銷其中改變的內容。這種情況下我們應該先使用reset命令對其撤銷新增。假設我已經新增了activity_main.xml檔案,現在我可以執行以下命令將其撤銷新增:

6.檢視提交記錄

在我們開發一段時間後可能已經向git提交過上百次**了,這個時候你可能已經忘記每次提交都是什麼時候,都修改了哪些內容。這種情況下我們可以使用log命令來檢視歷史提交資訊

圖中commit後面跟的是這條提交記錄的id,如果你想檢視某條提交記錄具體修改了什麼內容,可以使用如下命令:

git log -p

7.分支操作

分支是git中非常重要的概念,它主要的作用就是在現有**的基礎上開闢乙個分岔口,使得**可以在主幹線和分支線上同時進行開發,且相互之間不會影響。就像是在ps中畫圖,為了不影響已完成的部分我們會新建乙個圖層,在新圖層上畫好之後再合併到原圖層,分支就是那個新建的圖層。建議看完第一篇文章後再返回來看一下這部分,這樣會對分支有更好的理解。

言歸正傳,下面就列舉一些分支操作命令。檢視當前的版本庫當中有哪分支使用git branch -a命令,執行結果如下所示:

git branch -a

可以看到當前專案中只有乙個主分支存在,也就是master分支,接下我們建立乙個新的分支,執行命令git branch liusdev,然後再次執行git branch -a檢查是否建立成功

可以看到新分支liusdev已經建立成功了,master前面的星號*代表當前工作在主分支上,現在我們可以使用git checkout liusdev命令來切換到liusdev分支上,切換完畢之後再次執行git branch -a檢查是否切換成功

git checkout liusdev命令來切換到liusdev分支

可以看到已經切換成功了,這裡需要注意,我們在liusdev分支上做的任何修改提交不會影響到master分支,同理在master分支上所做的任何修改提交也不會影響到liusdev分支。現在假設我們在liusdev分支上修復了乙個bug,然而這個bug在master分支上依然是存在的,這個時候就需要使用merge命令來完成合併操作,

沒錯,我們要將liusdev分支上的改動合併進master分支就要先切換回master分支。如果我們不再需要liusdev這個分支了,可以使用git branch -d liusdev命令將liusdev分支刪除掉,結果如下所示:

git branch -d liusdev

8.與遠端版本庫協作

對專案**倉庫的每一次更新都可以看做是專案的乙個新的版本,所以我們又把**倉庫稱為版本庫。如果是乙個人在開發,那麼使用版本控制工具就遠遠無法發揮出它真正強大的功能。所有版本控制工具最重要的乙個特點就是可以使用它來進行團隊合作開發。首先我們在github的伺服器上有乙個遠端的版本庫,團隊的每個成員都從中獲取原始的**,然後各自進行開發,當某個成員在自己的電腦上編寫完成了某個功能之後,就將**提交到遠端版本庫,其他的成員只需要將遠端版本庫上的**同步到本地,就能保證大家的**都是相同的。所以團隊中的每個成員都要養成經常從版本庫中獲取最新**的習慣,不然大家的**可能會經常出現衝突。這樣每個團隊成員就可以各司其職,大家合作來完成乙個專案。

同樣為了演示,我在github上建立了遠端版本庫learngit:

git clone

這個資料夾中包含的就是遠端版本庫中所有的檔案,我們需要把這個資料夾下的檔案和我們的工程檔案進行合併,具體操作就是把learngit中的檔案複製出來(如果提示檔案衝突就選擇替換)這裡注意複製的時候不要忘了還有乙個隱藏的資料夾.git。複製出來之後把learngit刪除,這樣就算合併完畢了。

之後假設我在這份**的基礎上進行了一些修改和提交,那麼怎樣才能把本地修改的內容同步到遠端版本庫上呢,這就需要借助push命令了,以本例為例,具體命令如下所示:

git push master

這樣就把本地**同步到遠端版本庫的master分支了

因為我們將遠端版本庫與本地版本庫合併後還沒有進行過提交,所以上圖中我先使用add和commit命令將**新增並提交,然後使用push命令將本地**同步到遠端版本庫,這樣就相當於直接修改了遠端版本庫的master分支,所以git會要求輸入benxhingh賬戶的使用者名稱和密碼。在實際開發中大家當然不可能直接操作源倉庫,大家需要申請自己的github賬號,然後fork源倉庫到自己的賬號下進行開發,覺得功能做的差不多了之後提交pull request申請進行源倉庫的合併,這些會在第一篇文章中講到。

言歸正傳,我們檢查一下遠端版本庫,發現已經同步上去了:

知道了將本地**同步到遠端版本庫上的方法,接下來我們看一下如何將遠端版本庫上的修改同步到本地。git提供了兩種命令來完成此功能,分別是fetch和pull,fetch的語法規則和push是差不多的,如下所示:

git fetch origin master

git fetch master

執行這個命令後,就會將遠端版本庫上的**同步到本地,不過同步下來的**並不會合併到任何分支上去,而是存放到乙個origin/master分支上,這時我們可以通過diff命令來檢視遠端版本庫上到底修改了哪些內容:

git diff origin/master

之後再呼叫merge命令將origin/master分支上的修改合併到本地主分支上即可:

git merge origin/master

而pull命令則是相當於將fetch和merge這兩個命令放在一起執行了,用法如下所示:

git pull origin master

與fetch命令格式相同,就不多說了。

GitHub Git 的學習之始

唉,簡單地說,感受只有四個字 藍瘦香菇。我的github位址為 這個,我不知道具體從 找到自己位址啊 接下來說一下我對git和github的認識 不對的地方請糾正 git功能很強大,可以對自己的檔案進行增刪改查 備份 複製等等等等,關鍵是能記錄這些改動,git還可以建立本地倉庫,與github的倉庫...

配合 GitHub Git 的基礎使用

第一步 在本機上操作 1 安裝 git 客戶端 如何安裝不同作業系統的 git 客戶端,參見 2 開啟 git bash,開始鍵入各種配置資訊 git config global user.name you name git config global user.email yourmail ser...

我的資源彙總

2.c語言 3.電工常識 4.軟體技巧 6.微控制器 7.生活 8.soft 9.我的資源 10.git 收藏自平衡小車 mpu6050官網 為何 delay 1000 前後只有 999ms milli second 為何 for只要 4 us 使用timerone庫 使用 mstimer2 庫 補...