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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

git使用(2)

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

1.遠(yuǎn)程倉庫

a SSHKEY

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

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

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

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

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

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

b 添加遠(yuǎn)程庫

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

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

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

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

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

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

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

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

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

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

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

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

要關(guān)聯(lián)一個(gè)遠(yuǎ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 從遠(yuǎn)程庫克隆

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

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

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

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

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

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

2.分支管理

HEAD嚴(yán)格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當(dāng)前分支。

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

$ git checkout -b dev

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

$ git branch dev $ git checkout dev

然后,用git branch命令查看當(dāng)前分支:

git branch命令會列出所有分支,當(dāng)前分支前面會標(biāo)一個(gè)*號。

然后,我們就可以在dev分支上正常提交,比如對readme.txt做個(gè)修改,加上一行:

Creating a new branch is quick.

然后提交:

$ git add readme.txt $ git commit -m "branch test"

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

$ git checkout master

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

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

$ git merge dev

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

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

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

$ git branch -d dev

查看分支:git branch

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

切換分支:git checkout <name>

創(chuàng)建+切換分支:git checkout -b <name>

合并某分支到當(dāng)前分支:git merge <name>

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

3.合并沖突

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

4.分支管理策略

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

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

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

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

5.多人協(xié)作

當(dāng)你從遠(yuǎn)程倉庫克隆時(shí),實(shí)際上Git自動把本地的master分支和遠(yuǎn)程的master分支對應(yīng)起來了,并且,遠(yuǎn)程倉庫的默認(rèn)名稱是origin。

要查看遠(yuǎn)程庫的信息,用git remote:

$ git remote origin

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

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

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

推送分支

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

$ git push origin master

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

$ git push origin dev

抓取分支

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

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

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

當(dāng)你的小伙伴從遠(yuǎn)程庫clone時(shí),默認(rèn)情況下,你的小伙伴只能看到本地的master分支。不信可以用git branch命令看看:

$ git branch * master

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

? git remote update?
? git fetch?

$ git checkout -b dev origin/dev

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

$ 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分支與遠(yuǎn)程origin/dev分支的鏈接,根據(jù)提示,設(shè)置dev和origin/dev的鏈接:

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

  • 查看遠(yuǎn)程庫信息,使用git remote -v;

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

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

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

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

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

6.github使用

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

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

  • 可以推送pull request給官方倉庫來貢獻(xiàn)代碼。

轉(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)容還不錯(cuò),歡迎將生活随笔推薦給好友。