日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git使用(2)

發(fā)布時間:2023/11/30 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git使用(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.遠程倉庫

a SSHKEY

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

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

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

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

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

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

b 添加遠程庫

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

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

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

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

現(xiàn)在,我們根據(jù)GitHub的提示,在本地的learngit倉庫下運行命令:

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

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

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

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

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

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

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

要關(guān)聯(lián)一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git;

關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容;

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

c 從遠程庫克隆

現(xiàn)在,假設(shè)我們從零開發(fā),那么最好的方式是先創(chuàng)建遠程庫,然后,從遠程庫克隆。

首先,登陸GitHub,創(chuàng)建一個新的倉庫,名字叫g(shù)itskills:

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

現(xiàn)在,遠程庫已經(jīng)準備好了,下一步是用命令git clone克隆一個本地庫:

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

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

2.分支管理

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

首先,我們創(chuàng)建dev分支,然后切換到dev分支:

$ git checkout -b dev

git checkout命令加上-b參數(shù)表示創(chuàng)建并切換,相當于以下兩條命令:

$ 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"

現(xiàn)在,dev分支的工作完成,我們就可以切換回master分支:

$ git checkout master

切換回master分支后,再查看一個readme.txt文件,剛才添加的內(nèi)容不見了!因為那個提交是在dev分支上,而master分支此刻的提交點并沒有變:

現(xiàn)在,我們把dev分支的工作成果合并到master分支上:

$ git merge dev

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

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

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

$ git branch -d dev

查看分支:git branch

創(chuàng)建分支:git branch <name>

切換分支:git checkout <name>

創(chuàng)建+切換分支: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,這樣,從分支歷史上就可以看出分支信息。

下面我們實戰(zhàn)一下--no-ff方式的git merge:

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

5.多人協(xié)作

當你從遠程倉庫克隆時,實際上Git自動把本地的master分支和遠程的master分支對應(yīng)起來了,并且,遠程倉庫的默認名稱是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的地址。如果沒有推送權(quán)限,就看不到push的地址。

推送分支

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

$ git push origin master

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

$ git push origin dev

抓取分支

多人協(xié)作時,大家都會往master和dev分支上推送各自的修改。

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

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

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

$ git branch * master

現(xiàn)在,你的小伙伴要在dev分支上開發(fā),就必須創(chuàng)建遠程origin的dev分支到本地,于是他用這個命令創(chuàng)建本地dev分支:

? git remote update?
? git fetch?

$ git checkout -b dev origin/dev

現(xiàn)在,他就可以在dev上繼續(xù)修改,然后,時不時地把dev分支push到遠程:

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

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

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

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

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

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

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

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

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

  • 建立本地分支和遠程分支的關(guān)聯(lián),使用git branch --set-upstream branch-name origin/branch-name;

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

6.github使用

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

  • 自己擁有Fork后的倉庫的讀寫權(quán)限;

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

轉(zhuǎn)載自http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

? ?

?

轉(zhuǎn)載于:https://www.cnblogs.com/yltyy/p/6492355.html

總結(jié)

以上是生活随笔為你收集整理的git使用(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。