久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

我的Git筆記(三)

 高六博 2018-07-09

至此,,我們已經(jīng)了解了關(guān)于git的一些基本操作,現(xiàn)在我們將學(xué)習(xí)如何用git進(jìn)行合作,,其實(shí)質(zhì)就是和你的伙伴們共享commit,。那么如何來(lái)共享彼此的commit呢?這時(shí)候就需要用到遠(yuǎn)程庫(kù),,比如著名的GitHub,。

工作流程

讓我們先看看用git進(jìn)行合作的工作流程:假如你正在進(jìn)行著一個(gè)項(xiàng)目,同時(shí)你也已經(jīng)在你的本地倉(cāng)庫(kù)部署了這個(gè)項(xiàng)目,,且進(jìn)行了若干次commit,,現(xiàn)在你想要把這些commit共享給你的同事:

  1. 首先你會(huì)在服務(wù)器上創(chuàng)建一個(gè)遠(yuǎn)程庫(kù);
  2. 接著,,把你的commit提交push至這個(gè)庫(kù),;
mark
mark
  1. 這樣你的同事就可以通過(guò)clone這個(gè)庫(kù)來(lái)得到你的項(xiàng)目;
  2. 之后,,你的同事又對(duì)這個(gè)項(xiàng)目做了一些改變,,并把它們commit到她的本地庫(kù),然后也同時(shí)提交push到了遠(yuǎn)程庫(kù),;
mark
mark
  1. 你又可以拉取pull你的同事提交至遠(yuǎn)程庫(kù)的版本,。

在多數(shù)情況下,當(dāng)你和你的同事處理同一文件的不同部分時(shí),,Git會(huì)自動(dòng)找出合并這些更改的最佳方式,。但要是你們修改了同一文件的同一個(gè)部分時(shí),Git會(huì)出現(xiàn)錯(cuò)誤,,它無(wú)法協(xié)調(diào)你們的修改,。這時(shí)候,我們只能手動(dòng)解決這些沖突的部分,。通常情況下,,我們通過(guò)事先規(guī)劃或逐步納入更改來(lái)避免這種混亂局面。 同樣,,與合作伙伴進(jìn)行良好的溝通和規(guī)劃也可以有效防止Git合并沖突,。此外,頻繁地pushpull可以使所有成員都保持在最新版本的文件,。

我們開(kāi)始吧

在GitHub上建立一個(gè)遠(yuǎn)程庫(kù)

首先請(qǐng)自行注冊(cè)一個(gè)GitHub賬號(hào),,由于你的本地Git倉(cāng)庫(kù)和GitHub倉(cāng)庫(kù)之間的傳輸是通過(guò)SSH加密的,,所以,需要一點(diǎn)設(shè)置:

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

$ ssh-keygen -t rsa -C "[email protected]"

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

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

第2步:登陸GitHub,,打開(kāi)“Settings”,“SSH Keys”頁(yè)面:

mark
mark
mark
mark

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

mark
mark

點(diǎn)“Add Key”,,你就應(yīng)該看到已經(jīng)添加的Key:

mark
mark

GitHub需要識(shí)別出你推送的提交確實(shí)是你推送的,而不是別人冒充的,,而Git支持SSH協(xié)議,,所以,,GitHub只要知道了你的公鑰,就可以確認(rèn)只有你自己才能推送,。

當(dāng)然,,GitHub允許你添加多個(gè)Key。假定你有若干電腦,,你一會(huì)兒在公司提交,,一會(huì)兒在家里提交,只要把每臺(tái)電腦的Key都添加到GitHub,,就可以在每臺(tái)電腦上往GitHub推送了,。

現(xiàn)在,你可以在GitHub首頁(yè)點(diǎn)擊“New repository”新建一個(gè)名為zmayssnps的倉(cāng)庫(kù):

mark
mark
mark
mark

關(guān)于GitHub

  • GitHub的公共倉(cāng)庫(kù)是免費(fèi)的,,任何人都可以看到,,所以不要把敏感信息放進(jìn)去。私人倉(cāng)庫(kù)需要額外付費(fèi),,另一個(gè)辦法是自己動(dòng)手,,搭一個(gè)Git服務(wù)器,因?yàn)槭悄阕约旱腉it服務(wù)器,,所以別人也是看不見(jiàn)的,。如果你是學(xué)生的話可以申請(qǐng)一下GitHub的學(xué)生大禮包包含了免費(fèi)的私人倉(cāng)庫(kù)。
  • 如果你使用GitHub進(jìn)行合作,,那么所有的成員都需要一個(gè)GitHub賬號(hào),。
  • 默認(rèn)情況下,對(duì)于你創(chuàng)建的倉(cāng)庫(kù)只有你有push的權(quán)限,,所以你需要在GitHub設(shè)置里把你的同事也添加進(jìn)去,。

使用`Git remote`和遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行聯(lián)系

目前,我們這個(gè)倉(cāng)庫(kù)還是空的,,我們可以根據(jù)GitHub的提示,,從這個(gè)倉(cāng)庫(kù)克隆出新倉(cāng)庫(kù),也可以吧一個(gè)已有的本地倉(cāng)庫(kù)與之關(guān)聯(lián),,然后,,把本地倉(cāng)庫(kù)的內(nèi)容推送到GitHub倉(cāng)庫(kù)。

mark
mark
$ git remote add origin git@github.com:username/zmays-snps.git

在這行命令在中,,需要注意的是我們不僅僅指定了遠(yuǎn)程倉(cāng)庫(kù)的地址[email protected]:username/zmays-snps.git,,而且還為他指定了一個(gè)名稱(chēng)origin。現(xiàn)在,,試試輸入git remote -v,,可以看到你的本地庫(kù)與哪些遠(yuǎn)程庫(kù)進(jìn)行了關(guān)聯(lián)。

$ git remote -v
origin [email protected]:username/zmays-snps.git (fetch)
origin [email protected]:username/zmays-snps.git (push)

如果你需要改變與本地庫(kù)關(guān)聯(lián)的遠(yuǎn)程倉(cāng)庫(kù)可以先刪除再加入:

git remote rm origin
git remote add origin git@github.com:username/zmays-snps.git

使用`git push`提交你的`commit`至遠(yuǎn)程庫(kù)

當(dāng)我們添加了遠(yuǎn)程庫(kù)后,,就可以開(kāi)始把我們的commit上傳到遠(yuǎn)程倉(cāng)庫(kù)了(我們直接在之前創(chuàng)建的Project文件夾操作即可),。用Git進(jìn)行合作的核心就是不斷地上傳你的工作,,讓你的同事可以看到并修改,然后再將這些改變傳輸?shù)奖镜亍?/p>

$ git push origin master
Counting objects: 15, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (10/10), done.
Writing objects: 100% (15/15), 1.23 KiB | 631.00 KiB/s, done.
Total 15 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), done.
To https://github.com/zwbao/zmayssnps.git
 * [new branch]      master -> master

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

從現(xiàn)在起,只要本地作了提交,,就可以通過(guò)命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub,。

使用`git pull`從遠(yuǎn)程庫(kù)拉取`commit`

當(dāng)你將新的提交推送到遠(yuǎn)程庫(kù)時(shí),這時(shí)候你同事的版本就已經(jīng)過(guò)期了,。在繼續(xù)工作之前,,她需要將這些提交拉取到本地。Git上的協(xié)作就像是一種來(lái)回交換,,其中一個(gè)人將其最新的版本提交到遠(yuǎn)程庫(kù),其他協(xié)作者將這些更改下載到其本地庫(kù),,進(jìn)行自己的更改和提交,,然后將這些提交推送到遠(yuǎn)程庫(kù)供其他人查看和修改。

舉個(gè)例子,,現(xiàn)在,,我們將把我們自己的倉(cāng)庫(kù)克隆到不同的目錄中,模仿不同的成員進(jìn)行項(xiàng)目合作,。首先將遠(yuǎn)程存儲(chǔ)庫(kù)克隆到名為zmay-snps-barbara 的本地目錄,。 這個(gè)目錄名反映出這個(gè)本地存儲(chǔ)庫(kù)是我們的同事Barbara的庫(kù)。

$ git clone [email protected]:zwbao/zmayssnps.git
Cloning into 'zmayssnps'...
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '
github.com,13.229.188.59' (RSA) to the list of known hosts.
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 15 (delta 2), reused 15 (delta 2), pack-reused 0
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (2/2), done.
  • SSH警告

當(dāng)你第一次使用Git的clone或者push命令連接GitHub時(shí),,會(huì)得到一個(gè)警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

這是因?yàn)镚it使用SSH連接,,而SSH連接在第一次驗(yàn)證GitHub服務(wù)器的Key時(shí),需要你確認(rèn)GitHub的Key的指紋信息是否真的來(lái)自GitHub的服務(wù)器,,輸入yes回車(chē)即可,。

Git會(huì)輸出一個(gè)警告,告訴你已經(jīng)把GitHub的Key添加到本機(jī)的一個(gè)信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

這個(gè)警告只會(huì)出現(xiàn)一次,,后面的操作就不會(huì)有任何警告了,。

如果你實(shí)在擔(dān)心有人冒充GitHub服務(wù)器,輸入yes前可以對(duì)照GitHub的RSA Key的指紋信息是否與SSH連接給出的一致,。

現(xiàn)在這兩個(gè)倉(cāng)庫(kù)已經(jīng)有了相同的commit,,你也可以用git log來(lái)確認(rèn)一下。讓我們返回Project目錄進(jìn)行一些修改,,然后提交至遠(yuǎn)程庫(kù):

$  echo "Samples expected from sequencing core 2018-06-26" >> README.md
$ git commit -a -m "added information about samples"
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory.
[master 1be82cf] added information about samples
 1 file changed, 1 insertion(+)
$ git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 367 bytes | 367.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/zwbao/zmayssnps.git
   77eae85..1be82cf  master -> master

現(xiàn)在zmay-snps-barbara 目錄下的版本需要更新,,所以Barbara需要這樣做:

# in zmays-snps-barbara/zmayssnps/
$ git pull origin master
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:zwbao/zmayssnps
 * branch            master     -> FETCH_HEAD
   77eae85..1be82cf  master     -> origin/master
Updating 77eae85..1be82cf
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

zmay-snps-barbara 目錄下,看看git log的結(jié)果,,可以看到相同的commit

$ # in zmays-snps-barbara/zmayssnps/
$ git log --pretty=oneline --abbrev-commit
1be82cf (HEAD -> master, origin/master, origin/HEAD) added information about samples
77eae85 added .gitignore
13770d8 remove test.txt
043a28d add test.txt
630fbbb Add a line
d217683 Add README

使用Pushing 和 Pulling 來(lái)進(jìn)行合作

Barbara對(duì)這個(gè)項(xiàng)目的README.md文件做了一些修改:

# in zmays-snps-barbara/zmayssnps/  -- Barbara's version
$ echo "\n\nMaize reference genome version: refgen3" >> README.md
$ git commit -a -m "added reference genome info"
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory.
[master 734e105] added reference genome info
 1 file changed, 1 insertion(+)
$ git push origin master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 357 bytes | 357.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To github.com:zwbao/zmayssnps.git
   1be82cf..734e105  master -> master

現(xiàn)在,,我們的版本已經(jīng)落后了,,所以切換到我們的Project/目錄,把這些更新pull下來(lái):

# in Project/ -- our version
$ git pull origin master
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 3 (delta 1), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/zwbao/zmayssnps
 * branch            master     -> FETCH_HEAD
   1be82cf..734e105  master     -> origin/master
Updating 1be82cf..734e105
Fast-forward
 README.md | 1 +
 1 file changed, 1 insertion(+)

$ cat README.md
Git is a version control system.
Git is free software.Git is free software distributed under the GPL.
Project started 2018-06-11
Samples expected from sequencing core 2018-06-26
\n\nMaize reference genome version: refgen3

查看最近的兩次提交記錄:

$ git log -n 2
commit 269aa09418b0d47645c5d077369686ff04b16393
Author: Barbara <[email protected]>
Date: Sat Sep 28 22:58:55 2013 -0700

added reference genome info

commit 46f0781e9e081c6c9ee08b2d83a8464e9a26ae1f
Author: Vince Buffalo <[email protected]>
Date: Tue Sep 24 00:31:31 2013 -0700

added information about samples

這就是用Git來(lái)合作的記錄,,可以看到哪些人做了哪些修改,。

合并沖突

有時(shí)候當(dāng)你pull到本地的時(shí)候,Git會(huì)警告你發(fā)生了一個(gè)合并錯(cuò)誤,。這時(shí)候,,需要你手動(dòng)輸入一些東西來(lái)告訴Git如何來(lái)處理這個(gè)沖突。處理這些錯(cuò)誤的方法總是相似的:

  1. 首先輸入git status看看哪些文件沖突了,;
  2. 打開(kāi)并編輯這些文件,,手動(dòng)解決沖突;
  3. git add遞交這些沖突的文件到暫存區(qū),;
  4. git status來(lái)檢查一下,,再用git commit提交;之后,,你就可以馬上push到遠(yuǎn)程倉(cāng)庫(kù),,這樣你的合作者可以看到你解決了這個(gè)沖突,并在更新的版本上繼續(xù)他們的工作,。

本文主要參考了《Bioinformatics Data Skills》第五章以及廖雪峰Git教程(https://www./wiki/0013739516305929606dd18361248578c67b8067c8c017b000)

轉(zhuǎn)自生信草堂公眾號(hào),,已授權(quán)

生信草堂

浙大生信博士團(tuán)隊(duì)傾力打造的一個(gè)科研人員學(xué)習(xí)交流的公眾微信平臺(tái)。我們致力于科研社區(qū)服務(wù),,分享前沿的科技進(jìn)展,,提供生信分析方法,解讀經(jīng)典分析案例,,公眾數(shù)據(jù)庫(kù)的挖掘和臨床數(shù)據(jù)統(tǒng)計(jì)分析,。在此我們歡迎各位的加入!



 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多