在Github上进行合作开发
概述
之前Github支持開源,建立私有倉庫需要付費,因此一般都是在服務器上搭建自己的Git或者SVN。最近又有建私有倉庫的需求,于是在Github上搜尋了一下,發現Github現在對免費用戶也開放了建立私有倉庫的功能,故在此紀錄下所有步驟,供大家學習交流。需要注意的是,雖然Github開放了建立私有倉庫的功能,但是實測免費用戶最多只能夠添加三位collaborators,如果是一個更大的團隊進行合作開發,建議另辟蹊徑,搭建自己的版本控制器,或者選擇Github的付費服務。
準備工作
本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以我們需要在本機通過如下指令創建本地密鑰("Email@163.com"需要修改為注冊GitHub時所用的郵箱):
ssh-keygen -t rsa -C "Email@163.com" //創建密鑰上述指令不是DOS指令,所以需要使用Git Bash進行操作。該指令會在用戶目錄下(C:\Users\)生成公鑰和私鑰,將公鑰復制到Github上的SSH keys中(如下圖),進行用戶身份認證。只有經過身份驗證,本地倉庫才能獲得對遠程倉庫的push權限,接下來就可以愉快地搞事情啦!
創建項目并初始化本地倉庫
我們首先在本地創建了一個名叫iss-parent的項目,并在該工程下創建了iss-bigdata模塊。
此時本地的Git倉庫還未創建,我們需要在項目路徑下打開Git Bash,執行以下命令,初始化本地的Git倉庫:
git init顯示成功初始化一個空的本地倉庫,可以看到項目目錄看到.git文件夾(該文件夾是隱藏文件夾,需要設置查看隱藏文件夾才能看到)。
創建Github私有倉庫
在Github repositories界面的偏右位置,點擊一個顯眼的綠色“New”的按鈕,進入如下界面,選擇private:
我們選擇添加上README文件以備不時執行,并且加上gitignore,這個文件對于強迫癥患者來說還是很有用的,因為.idea文件夾、編譯后的文件夾、jar包之類的會一直變化,但是一般來說我們并不想把這些也push到倉庫,那么此時就可以使用gitignore文件把一些不想要push的文件過濾掉。需要注意一點,如果你不慎在創建.gitignore文件之前就push了項目,那么即使在.gitignore文件中寫入新的過濾規則,這些規則也不會起作用,Git仍然會對所有文件進行版本管理,所以創建倉庫的同時加上gitignore文件很重要!創建成功后會跳轉到如下界面:
關聯遠程倉庫
之前已經成功創建了本地倉庫,現在需要使用以下指令把本地倉庫與Github上的倉庫關聯起來:
git remote add origin git@github.com:LookElvis/iss-parent.git最后的參數可以在Github當前項目主界面的Clone or download獲得,可以選擇SSH方式或者HTTPS方式,本機之前配置了SSH,所以我們選擇SSH的方式,可以直接通過身份認證。
將本地倉庫推送至遠程倉庫
為了保證本地倉庫和遠程倉庫的一致性,我們需要先將遠程倉庫的文件pull下來,使本地倉庫的版本不高于遠程倉庫,然后再把當前項目創建的文件提交到本地倉庫。
git pull origin master #拉取遠程倉庫 git add . #添加到本地倉庫 git commit -m "first commit" #提交到本地倉庫此時本地倉庫已經結合了遠程倉庫的文件,此時可以將本地倉庫的所有內容推送到遠程倉庫,由于遠程倉庫是空的,我們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以后的推送或者拉取時就可以簡化命令,直接使用git push即可。
git push -u origin master查看效果
本地效果圖:
Github效果圖:
此后,項目的本地文件更新后都可以通過以下命令提交到遠程倉庫:
git add . git commit -m "update" git push例如在本地項目中添加了test.java文件后,經過以上操作,結果如圖:
添加合作開發者
因為該項目在Github上還是私有倉庫,所以其它人并不能看到,我們可以在Github上當前項目的Setting->Collaborators中進行設置。
以下是添加了一個合作開發者的截圖,最多可添加三個合作開發者。
添加合作者后,該合作者會收到郵件進行確認,確認后該項目就對合作者可見了,最后的最后,合作開發者就可以在git clone后愉快地對項目進行push和pull了~
合作者Github倉庫同步
合作開發者的git clone分為兩種情況:
1、git clone源倉庫;
2、fork源倉庫后git clone自己的倉庫。
對于git clone源倉庫而言,大家都可以對倉庫內容進行隨意地更改修正,很方便但是不夠安全。
對于fork源倉庫后git clone自己的倉庫而言,是開發中較為常見的一種方式,但是正常的push和pull只能對合作者自己的遠程倉庫進行操作,fork并不能將合作者倉庫和源倉庫綁定在一起,無法感知源倉庫的更新,也不能將更新提交到原倉庫。需要通過以下操作將開發者倉庫和源倉庫進行同步:
Github倉庫和源碼倉庫同步
首先要先確定一下是否建立了主repo的遠程源:
git remote -v如果里面只能看到你自己的兩個源(fetch 和 push),那就需要添加主repo的源:
git remote add upstream URL git remote -v然后就能看到upstream了。如果想同步原主倉庫的更新,可以做如下操作將原倉庫代碼拉取下來并與本地代碼進行合并:
git fetch upstream git merge upstream/master然后需要在本地創建一個分支,不要在master上做操作:
git checkout -b branchName在分支下進行更新,更新完成后先進行commit,再推送到遠程倉庫的'branchName'分支:
git add . git commit -m 'anything ...' git push origin branchName最后,需要在Github主頁點擊pull request按鈕,提交給項目作者,請求merge。
總結
以上是生活随笔為你收集整理的在Github上进行合作开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于嵌入式物联网技术的智慧病房方案设计
- 下一篇: 笔记本计算机盖,怎么让笔记本盖子合上不待