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不行):如下:
)