1. 程式人生 > 實用技巧 >Git和Github的使用

Git和Github的使用

Git和Github的使用

//本人的學習筆記,供個人檢視
參考:https://blog.csdn.net/u011535541/article/details/83379151

一、Git的基本操作

在這裡插入圖片描述

設定使用者名稱和郵箱:
在這裡插入圖片描述
建立本地倉庫(repository)viviantestgit
在這裡插入圖片描述
把該倉庫初始化為git可管理的倉庫:
在這裡插入圖片描述
在viviantestgit目錄下建立readme.txt,裡面寫“你好”
提交到倉庫
在這裡插入圖片描述
修改readme.txt(增加“second”)之後輸入git status檢視狀態:
已修改未提交狀態
在這裡插入圖片描述
檢視修改了什麼:
在這裡插入圖片描述

提交修改後的readme.txt
在這裡插入圖片描述
檢視歷史修改記錄:
在這裡插入圖片描述
簡化版本

在這裡插入圖片描述
回退到上一個版本
檢視目前內容
在這裡插入圖片描述
撤回回退
可以通過git reflog查到版本號
在這裡插入圖片描述

在這裡插入圖片描述
撤銷修改:
法一:如果我知道要刪掉那些內容的話,直接手動更改去掉那些需要的檔案,然後add新增到暫存區,最後commit掉。

法二:我可以按以前的方法直接恢復到上一個版本。使用 git reset --hard HEAD^

法三:git checkout – readme.txt
有以下兩種情況:

1.readme.txt自動修改後,還沒有放到暫存區,使用 撤銷修改就回到和版本庫一模一樣的狀態。(在readme.txt中增加third)
在這裡插入圖片描述

2.另外一種是readme.txt已經放入暫存區了,接著又作了修改,撤銷修改就回到新增暫存區後的狀態。(在readme.txt中增加third,add後又增加fourth)

在這裡插入圖片描述
刪除和恢復:
在這裡插入圖片描述
rm readme.txt之後可以commit(不可恢復),也可以用git checkout – readme.txt恢復檔案(之後要commit)

二、使用Github

1.把本地庫上傳到遠端庫

在本地倉庫路徑下與遠端倉庫testgit關聯起來並把本地倉庫push到遠端。
注意
把本地庫的內容推送到遠端,使用 git push命令,實際上是把當前分支master推送到遠端。

由於遠端庫是空的,我們第一次推送master分支時,加上了 –u引數,Git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令(git push origin master)。

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

2.把遠端庫克隆到本地

把testgit2克隆到本地
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

3.分支建立與合併

git checkout -b dev相當於
git branch dev建立分支
git checkout dev轉換分支
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
總結建立與合併分支命令如下

檢視分支:git branch

建立分支:git branch name

切換分支:git checkout name

建立+切換分支:git checkout –b name

合併某分支到當前分支:git merge name

刪除分支:git branch –d name

解決衝突:
完成以下修改:
在這裡插入圖片描述
在這裡插入圖片描述
此時fenzhi1的readme.txt的內容是:在這裡插入圖片描述
master的readme.txt的內容是:在這裡插入圖片描述
合併會產生衝突:
在這裡插入圖片描述
在這裡插入圖片描述
修改:
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述
檢視修改記錄:
在這裡插入圖片描述
通常合併分支時,git一般使用”Fast forward”模式,在這種模式下,刪除分支後,會丟掉分支資訊,現在我們來使用帶引數 –no-ff來禁用”Fast forward”模式

在這裡插入圖片描述
分支策略:首先master主分支應該是非常穩定的,也就是用來發布新版本,一般情況下不允許在上面幹活,幹活一般情況下在新建的dev分支上幹活,幹完後,比如上要釋出,或者說dev分支程式碼穩定後可以合併到主分支master上來。

另外:可以使用git stash把當前沒有commit的分支隱藏起來,再去別的分支工作,工作完後回到這個分支,使用git stash apply(恢復後,stash內容並不刪除,你需要使用命令git stash drop來刪除) 或git stash pop(恢復的同時把stash內容也刪除了)來恢復。

4.使用GitHub完成多人合作

origin代表遠端倉庫
在這裡插入圖片描述
現在把本地master分支push到遠端倉庫:
在這裡插入圖片描述
把fenzhi1分支推送到遠端倉庫:
在這裡插入圖片描述
在這裡插入圖片描述
接下來模擬兩個人合作使用github:一個人(vivian是我方)的本地倉庫是viviantestgit,另一個人(summer是對方)的是summertestgit。

首先summer先把遠端倉庫clone下來:
在這裡插入圖片描述
在這裡插入圖片描述
summer打算在fenzhi1上進行工作修改,並且push成功
在這裡插入圖片描述
在這裡插入圖片描述
與此同時
vivian也在fenzhi1上進行工作,但此時她不知道遠端的fenzhi1已經被重新push了,因此她還在原來的自己的分支上進行工作。

在這裡插入圖片描述
先把原來fenzhi1的遠端分支pull下來
在這裡插入圖片描述
然後在檔案裡面修改你的內容

在這裡插入圖片描述
修改成:
在這裡插入圖片描述
然後再push:
在這裡插入圖片描述
在這裡插入圖片描述
成功push上去。

總結:
因此:多人協作工作模式一般是這樣的:

首先,可以試圖用git push origin branch-name推送自己的修改.
如果推送失敗,則因為遠端分支比你的本地更新早,需要先用git pull試圖合併。
如果合併有衝突,則需要解決衝突,並在本地提交。再用git push origin branch-name推送。

//

先用git pull把最新的提交從origin/fenzhi1抓下來,然後在本地合併,解決衝突,再推送
在這裡插入圖片描述
git pull也失敗了,原因是沒有指定本地fenzhi1分支與遠端origin/fenzhi1分支的連結,根據提示,設定fenzhi2和origin/fenzhi1的連結(不知道為什麼fenzhi1不行):如下:
在這裡插入圖片描述

5.實用:

在這裡插入圖片描述