git使用(2)

1.遠程倉庫

a SSHKEY

第1步:創建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsaid_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創建SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可,由于這個Key也不是用于軍事目的,所以也無需設置密碼。

如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsaid_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

第2步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面:

然后,點“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內容

b 添加遠程庫

現在的情景是,你已經在本地創建了一個Git倉庫后,又想在GitHub創建一個Git倉庫,并且讓這兩個倉庫進行遠程同步,這樣,GitHub上的倉庫既可以作為備份,又可以讓其他人通過該倉庫來協作,真是一舉多得。

首先,登陸GitHub,然后,在右上角找到“Create a new repo”按鈕,創建一個新的倉庫:

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

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

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

$ git remote add origin git@github.com:michaelliao/learngit.git

請千萬注意,把上面的michaelliao替換成你自己的GitHub賬戶名,否則,你在本地關聯的就是我的遠程庫,關聯沒有問題,但是你以后推送是推不上去的,因為你的SSH Key公鑰不在我的賬戶列表中。

添加后,遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫。

下一步,就可以把本地庫的所有內容推送到遠程庫上:

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

由于遠程庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令。

推送成功后,可以立刻在GitHub頁面中看到遠程庫的內容已經和本地一模一樣:

要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git

關聯后,使用命令git push -u origin master第一次推送master分支的所有內容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

c 從遠程庫克隆

現在,假設我們從零開發,那么最好的方式是先創建遠程庫,然后,從遠程庫克隆。

首先,登陸GitHub,創建一個新的倉庫,名字叫gitskills

我們勾選Initialize this repository with a README,這樣GitHub會自動為我們創建一個README.md文件。創建完畢后,可以看到README.md文件:

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

$ git clone git@github.com:michaelliao/gitskills.git

注意把Git庫的地址換成你自己的,然后進入gitskills目錄看看,已經有README.md文件了。

2.分支管理

HEAD嚴格來說不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的就是當前分支。

首先,我們創建dev分支,然后切換到dev分支:

$ git checkout -b dev

git checkout命令加上-b參數表示創建并切換,相當于以下兩條命令:

$ 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

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

當然,也不是每次合并都能Fast-forward,我們后面會講其他方式的合并。

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

$ git branch -d dev

查看分支:git branch

創建分支:git branch <name>

切換分支:git checkout <name>

創建+切換分支:git checkout -b <name>

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

刪除分支:git branch -d <name>

3.合并沖突

git log --graph --pretty=oneline --abbrev-commit看到分支合并圖 ?

4.分支管理策略

通常,合并分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支后,會丟掉分支信息。

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

下面我們實戰一下--no-ff方式的git merge

$ git merge --no-ff -m "merge with no-ff" dev

5.多人協作

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

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

$ git remote
origin

或者,用git remote -v顯示更詳細的信息:

$ git remote -v
origin  git@github.com:michaelliao/learngit.git (fetch)
origin  git@github.com:michaelliao/learngit.git (push) 

上面顯示了可以抓取和推送的origin的地址。如果沒有推送權限,就看不到push的地址。

推送分支

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

$ git push origin master

如果要推送其他分支,比如dev,就改成:

$ git push origin dev

抓取分支

多人協作時,大家都會往masterdev分支上推送各自的修改。

現在,模擬一個你的小伙伴,可以在另一臺電腦(注意要把SSH Key添加到GitHub)或者同一臺電腦的另一個目錄下克隆:

$ git clone git@github.com:michaelliao/learngit.git

當你的小伙伴從遠程庫clone時,默認情況下,你的小伙伴只能看到本地的master分支。不信可以用git branch命令看看:

$ git branch
* master

現在,你的小伙伴要在dev分支上開發,就必須創建遠程origindev分支到本地,于是他用這個命令創建本地dev分支:

? git remote update?
? git fetch?

$ git checkout -b dev origin/dev

現在,他就可以在dev上繼續修改,然后,時不時地把dev分支push到遠程:

$ git commit -m "add /usr/bin/env" $ git push origin dev

你的小伙伴已經向origin/dev分支推送了他的提交,而碰巧你也對同樣的文件作了修改,并試圖推送:

$ git add hello.py 
$ git commit -m "add coding: utf-8" $ git push origin dev
Git已經提示我們,先用git pull把最新的提交從origin/dev抓下來,然后,在本地合并,解決沖突,再推送:

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

$ git branch --set-upstream dev origin/dev

  • 查看遠程庫信息,使用git remote -v

  • 本地新建的分支如果不推送到遠程,對其他人就是不可見的;

  • 從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠程的新提交;

  • 在本地創建和遠程分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠程分支的名稱最好一致;

  • 建立本地分支和遠程分支的關聯,使用git branch --set-upstream branch-name origin/branch-name

  • 從遠程抓取分支,使用git pull,如果有沖突,要先處理沖突。

6.github使用

  • 在GitHub上,可以任意Fork開源倉庫;

  • 自己擁有Fork后的倉庫的讀寫權限;

  • 可以推送pull request給官方倉庫來貢獻代碼。

轉載自http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

?
?

?

轉載于:https://www.cnblogs.com/yltyy/p/6492355.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393628.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393628.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393628.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

郵件中的商務英語

一、常見縮寫 CC carbon copy&#xff1a;抄送 FYI for your information&#xff1a;供你參考 EOD end of the day BTW By the way&#xff1a;順便提一下 COB close of the business 這兩個詞都是指下班前。需要催促某人在下班前給到回復的時候可以用用它們。 eg: Ple…

vue 橫向菜單滾動定位_使用vue組件+iscroll實現一個橫向菜單,不能正確滑動

使用vue組件iscroll實現一個橫向菜單&#xff0c;可是卻不能滑動&#xff0c;給父元素ul寫死一個寬度可以滑動。但是&#xff0c;我在computed里計算寬度&#xff0c;直接路由進去不能滑動&#xff0c;當我進入別的組件(切換路由)回來又可以滑動了示例地址&#xff1a;http://o…

leetcode1353. 最多可以參加的會議數目(貪心算法)

給你一個數組 events&#xff0c;其中 events[i] [startDayi, endDayi] &#xff0c;表示會議 i 開始于 startDayi &#xff0c;結束于 endDayi 。 你可以在滿足 startDayi < d < endDayi 中的任意一天 d 參加會議 i 。注意&#xff0c;一天只能參加一個會議。 請你返…

計算機組成原理實驗讀r1,計算機組成原理實驗一

計算機組成原理實驗一 (5頁)本資源提供全文預覽&#xff0c;點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧&#xff0c;查找使用更方便哦&#xff01;8.90 積分計算機組成原理實驗計算機組成原理實驗第一章、TEC-5 計算機組成實驗箱簡介運算器運算器74181通用寄存器通用寄存器…

如何使用Kotlin構建具有在線狀態的Android Messenger應用

by Neo Ighodaro由新Ighodaro When building a chat application, it is essential to have an online presence feature. It is essential because your users will like to know when their friends are online, and are more likely to respond to their messages in real …

Spark常見問題解決辦法

以下是在學習和使用spark過程中遇到的一些問題&#xff0c;記錄下來。 1、首先來說說spark任務運行完后查錯最常用的一個命令&#xff0c;那就是把任務運行日志down下來。 程序存在錯誤&#xff0c;將日志down下來查看具體原因!down日志命令&#xff1a;yarn logs -application…

linux下安裝php的swoole擴展模塊(安裝后php加載不出來?)

應開發同事要求&#xff0c;需要安裝php的擴展模塊swoole。 swoole是一種PHP高級Web開發框架&#xff0c;框架不是為了提升網站的性能&#xff0c;而是為了提升網站的開發效率&#xff0c;以最少的性能損耗&#xff0c;換取最大的開發效率。 假設服務器上php服務版本為php5.6.2…

autosar工具鏈_Autosar開發與手寫代碼開發的區別

Autosar開發流程1.BSW開發主要應用工具鏈&#xff08;Vector等工具&#xff0c;具體可以百度搜索Autosar配置工具&#xff09;來配置&#xff0c;復雜驅動的代碼需要手寫&#xff0c;但是也要符合Autosar的接口標準&#xff0c;主要包括&#xff0c;CAN通信配置、數字輸入配置、…

山東計算機類好的民辦大學,2021年山東所有民辦大學名單及排名(教育部)

高考考上一個好的大學&#xff0c;是每位考生和家長的一個夢想,但是選擇一個適合自己的大學也非常重要。本文高考助手網幫各位考生整理了關于山東本地區所有的民辦大學名單、山東所有的民辦大學分數線排名、山東民辦大學文理科投檔線等相關知識&#xff0c;各位考生在填報志愿的…

leetcode1536. 排布二進制網格的最少交換次數(貪心算法)

給你一個 n x n 的二進制網格 grid&#xff0c;每一次操作中&#xff0c;你可以選擇網格的 相鄰兩行 進行交換。 一個符合要求的網格需要滿足主對角線以上的格子全部都是 0 。 請你返回使網格滿足要求的最少操作次數&#xff0c;如果無法使網格符合要求&#xff0c;請你返回 …

xml文檔包含html代碼_為什么文檔很重要,以及為什么應將其包含在代碼中

xml文檔包含html代碼There are a plethora of acronyms when it comes to software development. KISS, DRY, SOLID… and so on and so forth. But, when it comes to documenting or commenting your code, there is no simple catchphrase.關于軟件開發&#xff0c;有很多首…

python 版本分布式鎖

此文章&#xff0c;實現python 版本的分布式鎖&#xff0c;java版本的可以使用curator很容易實現&#xff0c;python版本如下在做分布式系統開發的時候&#xff0c;分布式鎖可以說是必需的一個組件。最近做了一些調研和嘗試&#xff0c;經過對比&#xff0c;基于ZooKeeper的分布…

JavaScript數組(2)---遍歷/迭代方法 8種

最近工作中經常涉及到數據的處理&#xff0c;數組尤其常見&#xff0c;經常需要對其進行遍歷、轉換操作&#xff0c;網上的文章零零散散&#xff0c;不得已自己又找出紅寶書來翻出來看&#xff0c;順便記一筆&#xff0c;便于以后查詢。 數組常用的方法 ECMAScript5為數組定義了…

用例設計:思維導圖orExcel

一、 某次緊急發版時使用思維導圖來進行了用例的設計&#xff0c;很被導圖多分支羅列、在單一分支上層層遞進設計模式的吸引&#xff0c;最終看到由版本主題開枝散葉衍發出的結構性用例時非常開心。從此&#xff0c;幾個版本的迭代都使用思維導圖進行用例設計。 然而部門制度關…

class對象和class文件_Class文件格式

我們知道Java是一門跨平臺的語言&#xff0c;我們編寫的Java代碼會被編譯成中間class文件以讓Java虛擬機解析運行。而Java虛擬機規范僅僅描述了抽象的Java虛擬機&#xff0c;在實現具體的Java虛擬機時&#xff0c;僅指出了設計規范。Java虛擬機的實現必須體現規范中的內容&…

2018計算機應用基礎考試6,2018結構工程師《計算機應用基礎》試題(6)

大家做好準備迎接2018考試了嗎?出國留學網為您整理了“2018結構工程師《計算機應用基礎》試題(6)”&#xff0c;跟著出國留學網來了解一下吧。要相信只要自己有足夠的實力&#xff0c;無論考什么都不會害怕!2018結構工程師《計算機應用基礎》試題(6)1、下列存儲器中&#xff0…

leetcode1282. 用戶分組(貪心算法)

有 n 位用戶參加活動&#xff0c;他們的 ID 從 0 到 n - 1&#xff0c;每位用戶都 恰好 屬于某一用戶組。給你一個長度為 n 的數組 groupSizes&#xff0c;其中包含每位用戶所處的用戶組的大小&#xff0c;請你返回用戶分組情況&#xff08;存在的用戶組以及每個組中用戶的 ID&…

mysql解鎖_mysql 解鎖

show OPEN TABLES where In_use > 0;show processlist;show status like Table%;show status like %lock%;show OPEN TABLES where In_use > 0&#xff1b;//1.查看當前數據庫鎖表的情況SELECT * FROM information_schema.INNODB_TRX;//2.殺掉查詢結果中鎖表的trx_mysql_…

強制換行和禁止換行

強制換行&#xff1a;word-break: break-all; 只對英文起作用&#xff0c;以字母作為換行依據word-wrap: break-word; 只對英文起作用&#xff0c;以單詞作為換行依據white-space: pre-wrap; 只對中文起作用&#xff0c;強制換行禁止換行&#xff1a;white-space: now…

構建自己的簡單微服務架構(開源)

構建自己的簡單微服務架構&#xff08;開源&#xff09; 原文:構建自己的簡單微服務架構&#xff08;開源&#xff09;前言 本篇僅作引導&#xff0c;內容較多&#xff0c;如果閱讀不方便&#xff0c;可以使用電腦打開我們的文檔官網進行閱讀。如下圖所示&#…