git遠程倉庫

遠程倉庫。

在了解之前,先注冊github賬號,由于你的本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的,所以需要一點設置:

第一步:創建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果有的話,直接跳過此如下命令,如果沒有的話,打開命令行,輸入如下命令:

ssh-keygen? -t rsa –C “youremail@example.com”, 由于我本地此前運行過一次,所以本地有,如下所示:

id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

第二步:登錄github,打開” settings”中的SSH Keys頁面,然后點擊“Add SSH Key”,填上任意title,在Key文本框里黏貼id_rsa.pub文件的內容。

點擊 Add Key,你就應該可以看到已經添加的key。

如何添加遠程庫?

現在的情景是:我們已經在本地創建了一個Git倉庫后,又想在github創建一個Git倉庫,并且希望這兩個倉庫進行遠程同步,這樣github的倉庫可以作為備份,又可以其他人通過該倉庫來協作。

首先,登錄github上,然后在右上角找到“create a new repo”創建一個新的倉庫。如下:

在Repository name填入testgit,其他保持默認設置,點擊“Create repository”按鈕,就成功地創建了一個新的Git倉庫:

目前,在GitHub上的這個testgit倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然后,把本地倉庫的內容推送到GitHub倉庫。

現在,我們根據GitHub的提示,在本地的testgit倉庫下運行命令:

git remote add origin https://github.com/tugenhua0707/testgit.git

所有的如下:

把本地庫的內容推送到遠程,使用 git push命令,實際上是把當前分支master推送到遠程。

由于遠程庫是空的,我們第一次推送master分支時,加上了 –u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令。推送成功后,可以立刻在github頁面中看到遠程庫的內容已經和本地一模一樣了,上面的要輸入github的用戶名和密碼如下所示:



新增:pull-request》》點擊右側Fork到自己賬號下,點擊鏈接。在VS中,View,Project,Connect,鏈接到項目。 克隆。修改,提交。項目下有:New pull request。查看變更,變更處還可以注釋。



從現在起,只要本地作了提交,就可以通過如下命令:

git push origin master

把本地master分支的最新修改推送到github上了,現在你就擁有了真正的分布式版本庫了。

2. 如何從遠程庫克隆?

上面我們了解了先有本地庫,后有遠程庫時候,如何關聯遠程庫。

現在我們想,假如遠程庫有新的內容了,我想克隆到本地來 如何克隆呢?

首先,登錄github,創建一個新的倉庫,名字叫testgit2.如下:

如下,我們看到:

現在,遠程庫已經準備好了,下一步是使用命令git clone克隆一個本地庫了。如下所示:

接著在我本地目錄下 生成testgit2目錄了,如下所示:

六:創建與合并分支。

在版本回填退里,你已經知道,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git里,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。

首先,我們來創建dev分支,然后切換到dev分支上。如下操作:

git checkout 命令加上 –b參數表示創建并切換,相當于如下2條命令

git branch dev

git checkout dev

git branch查看分支,會列出所有的分支,當前分支前面會添加一個星號。然后我們在dev分支上繼續做demo,比如我們現在在readme.txt再增加一行 7777777777777

首先我們先來查看下readme.txt內容,接著添加內容77777777,如下:

現在dev分支工作已完成,現在我們切換到主分支master上,繼續查看readme.txt內容如下:

現在我們可以把dev分支上的內容合并到分支master上了,可以在master分支上,使用如下命令 git merge dev 如下所示:

git merge命令用于合并指定分支到當前分支上,合并后,再查看readme.txt內容,可以看到,和dev分支最新提交的是完全一樣的。

注意到上面的Fast-forward信息,Git告訴我們,這次合并是“快進模式”,也就是直接把master指向dev的當前提交,所以合并速度非常快。

合并完成后,我們可以接著刪除dev分支了,操作如下:

總結創建與合并分支命令如下:

查看分支:git branch

創建分支:git branch name

切換分支:git checkout name

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

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

刪除分支:git branch –d name

如何解決沖突?

下面我們還是一步一步來,先新建一個新分支,比如名字叫fenzhi1,在readme.txt添加一行內容8888888,然后提交,如下所示:

同樣,我們現在切換到master分支上來,也在最后一行添加內容,內容為99999999,如下所示:

現在我們需要在master分支上來合并fenzhi1,如下操作:

Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,其中<<>>>>fenzhi1 是指fenzhi1上修改的內容,我們可以修改下如下后保存:

如果我想查看分支合并的情況的話,需要使用命令 git log.命令行演示如下:

3.分支管理策略。

通常合并分支時,git一般使用”Fast forward”模式,在這種模式下,刪除分支后,會丟掉分支信息,現在我們來使用帶參數 –no-ff來禁用”Fast forward”模式。首先我們來做demo演示下:

創建一個dev分支。

修改readme.txt內容。

添加到暫存區。

切換回主分支(master)。

合并dev分支,使用命令 git merge –no-ff? -m “注釋” dev

查看歷史記錄

截圖如下:

分支策略:首先master主分支應該是非常穩定的,也就是用來發布新版本,一般情況下不允許在上面干活,干活一般情況下在新建的dev分支上干活,干完后,比如上要發布,或者說dev分支代碼穩定后可以合并到主分支master上來。

七:bug分支:

在開發中,會經常碰到bug問題,那么有了bug就需要修復,在Git中,分支是很強大的,每個bug都可以通過一個臨時分支來修復,修復完成后,合并分支,然后將臨時的分支刪除掉。

比如我在開發中接到一個404 bug時候,我們可以創建一個404分支來修復它,但是,當前的dev分支上的工作還沒有提交。比如如下:

并不是我不想提交,而是工作進行到一半時候,我們還無法提交,比如我這個分支bug要2天完成,但是我issue-404 bug需要5個小時內完成。怎么辦呢?還好,Git還提供了一個stash功能,可以把當前工作現場 ”隱藏起來”,等以后恢復現場后繼續工作。如下:

所以現在我可以通過創建issue-404分支來修復bug了。

首先我們要確定在那個分支上修復bug,比如我現在是在主分支master上來修復的,現在我要在master分支上創建一個臨時分支,演示如下:

修復完成后,切換到master分支上,并完成合并,最后刪除issue-404分支。演示如下:

現在,我們回到dev分支上干活了。

工作區是干凈的,那么我們工作現場去哪里呢?我們可以使用命令 git stash list來查看下。如下:

工作現場還在,Git把stash內容存在某個地方了,但是需要恢復一下,可以使用如下2個方法:

git stash apply恢復,恢復后,stash內容并不刪除,你需要使用命令git stash drop來刪除。

另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了。

演示如下

八:多人協作。

當你從遠程庫克隆時候,實際上Git自動把本地的master分支和遠程的master分支對應起來了,并且遠程庫的默認名稱是origin。

要查看遠程庫的信息 使用 git remote

要查看遠程庫的詳細信息 使用 git remote –v

如下演示:

一:推送分支:

推送分支就是把該分支上所有本地提交到遠程庫中,推送時,要指定本地分支,這樣,Git就會把該分支推送到遠程庫對應的遠程分支上:

使用命令 git push origin master

比如我現在的github上的readme.txt代碼如下:

本地的readme.txt代碼如下:

現在我想把本地更新的readme.txt代碼推送到遠程庫中,使用命令如下:

我們可以看到如上,推送成功,我們可以繼續來截圖github上的readme.txt內容 如下:

可以看到 推送成功了,如果我們現在要推送到其他分支,比如dev分支上,我們還是那個命令 git push origin dev

那么一般情況下,那些分支要推送呢?

master分支是主分支,因此要時刻與遠程同步。

一些修復bug分支不需要推送到遠程去,可以先合并到主分支上,然后把主分支master推送到遠程去。

二:抓取分支:

多人協作時,大家都會往master分支上推送各自的修改。現在我們可以模擬另外一個同事,可以在另一臺電腦上(注意要把SSH key添加到github上)或者同一臺電腦上另外一個目錄克隆,新建一個目錄名字叫testgit2

但是我首先要把dev分支也要推送到遠程去,如下

接著進入testgit2目錄,進行克隆遠程的庫到本地來,如下:

現在目錄下生成有如下所示:

現在我們的小伙伴要在dev分支上做開發,就必須把遠程的origin的dev分支到本地來,于是可以使用命令創建本地dev分支:git checkout? –b dev origin/dev

現在小伙伴們就可以在dev分支上做開發了,開發完成后把dev分支推送到遠程庫時。

如下:

小伙伴們已經向origin/dev分支上推送了提交,而我在我的目錄文件下也對同樣的文件同個地方作了修改,也試圖推送到遠程庫時,如下:

由上面可知:推送失敗,因為我的小伙伴最新提交的和我試圖推送的有沖突,解決的辦法也很簡單,上面已經提示我們,先用git pull把最新的提交從origin/dev抓下來,然后在本地合并,解決沖突,再推送。

git pull也失敗了,原因是沒有指定本地dev分支與遠程origin/dev分支的鏈接,根據提示,設置dev和origin/dev的鏈接:如下:

這回git pull成功,但是合并有沖突,需要手動解決,解決的方法和分支管理中的 解決沖突完全一樣。解決后,提交,再push:

我們可以先來看看readme.txt內容了。

現在手動已經解決完了,我接在需要再提交,再push到遠程庫里面去。如下所示:

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

首先,可以試圖用git push origin branch-name推送自己的修改.

如果推送失敗,則因為遠程分支比你的本地更新早,需要先用git pull試圖合并。

如果合并有沖突,則需要解決沖突,并在本地提交。再用git push origin branch-name推送。

Git基本常用命令如下:

mkdir:? ? ? ? XX (創建一個空目錄 XX指目錄名)

pwd:? ? ? ? ? 顯示當前目錄的路徑。

git init? ? ? ? ? 把當前的目錄變成可以管理的git倉庫,生成隱藏.git文件。

git add XX? ? ? 把xx文件添加到暫存區去。

git commit –m “XX”? 提交文件 –m 后面的是注釋。

git status? ? ? ? 查看倉庫狀態

git diff? XX? ? ? 查看XX文件修改了那些內容

git log? ? ? ? ? 查看歷史記錄

git reset? --hard HEAD^ 或者 git reset? --hard HEAD~ 回退到上一個版本

(如果想回退到100個版本,使用git reset –hard HEAD~100 )

cat XX? ? ? ? 查看XX文件內容

git reflog? ? ? 查看歷史記錄的版本號id

git checkout -- XX? 把XX文件在工作區的修改全部撤銷。

git rm XX? ? ? ? ? 刪除XX文件

git remote add origin https://github.com/tugenhua0707/testgit 關聯一個遠程庫

git push –u(第一次要用-u 以后不需要) origin master 把當前master分支推送到遠程庫

git clone https://github.com/tugenhua0707/testgit? 從遠程庫中克隆

git checkout –b dev? 創建dev分支 并切換到dev分支上

git branch? 查看當前所有的分支

git checkout master 切換回master分支

git merge dev? ? 在當前的分支上合并dev分支

git branch –d dev 刪除dev分支

git branch name? 創建分支

git stash 把當前的工作隱藏起來 等以后恢復現場后繼續工作

git stash list 查看所有被隱藏的文件列表

git stash apply 恢復被隱藏的文件,但是內容不刪除

git stash drop 刪除文件

git stash pop 恢復文件的同時 也刪除文件

git remote 查看遠程庫的信息

git remote –v 查看遠程庫的詳細信息

git push origin master? Git會把master分支推送到遠程庫對應的遠程分支上

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,697評論 9 163
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,694評論 4 54
  • 不論什么行業,滿足感都來自于缺乏遠見。 在中國,高尚的標志是在理想上與小時候別無二致,聰明的標志卻在認識世界的方式...
    木卯丁閱讀 459評論 1 2
  • 一覺醒來,下雨了,分不清黑夜還是白天。 我忍住了想要沖出去奔跑的沖動,我怕別人的嘲笑,害怕別人異樣的目光和不懷好意...
    一在河之洲_一閱讀 187評論 0 1
  • 之一出世指南 一個有血有肉的生命,肯定喜歡美味和秀色,象大地渴望陽光的照耀,雨露的滋潤,但絕不會貪得無厭,只要求自...
    閑不語閱讀 104評論 0 2