一旬薯、 前提信息 (入職時從公司獲取):
- 獲取賬號和郵箱
公司郵箱 :http://mail.yjf.tech/sclcoder@yjf.tech/***
GitLab 個人賬號 : git.yjf.tech:sclcoder/***
二潜秋、 初始設(shè)置 (一次性設(shè)置工作)
本地個人工作電腦 git 全局性配置
git config --global user.name "sclcoder"
git config --global user.email "sclcoder@yjf.tech"使用 GIT GUI help 菜單中 Show SSH Key 菜單項對話框按鈕 Generate Key 生成一對公鑰私鑰常潮;
這一對公鑰私鑰用于git 命令行向gitlab服務(wù)器推送文件時使用耻瑟;
生成的公鑰私鑰文件保存在工作站當(dāng)前用戶的目錄下 id_rsa 是私鑰兔毒, id_rsa.pub 是公鑰;將生成的SSH Key 的公鑰文本添加到gitlab服務(wù)器個人用戶profile中
GitLab 上個人用戶 profile中 增加一個新的 SSH Key 的路徑是 : http://git.yjf.tech/profile/keys
GitLab 上每個個人用戶profile 中可以增加多個 SSH Key
三、針對每個參與的項目一次性的初始化工作(以參與的項目為 dev 組下的 aita3 為例):
登錄 gitlab fork 參與的項目主庫 http://git.yjf.tech/dev/aita3.git 到自己名下 (這里以名字 sclcoder 為例)吧雹,這一步驟會在自己名下生成項目,路徑類似于 http://git.yjf.tech/sclcoder/aita3.git 涂身, 其內(nèi)容復(fù)制自 http://git.yjf.tech/dev/aita3.git
將個人 fork 代碼庫克隆到個人本地工作電腦git clone http://git.yjf.tech/sclcoder/aita3.git 這一步驟會在本地當(dāng)前目錄創(chuàng)建目錄 aita3雄卷,內(nèi)容是 gitlab服務(wù)器上個人名下 fork庫的克隆(包含所有分支),我們稱之為本地工作庫
-
本地工作電腦當(dāng)前目錄切換到本地工作庫蛤售,并添加遠(yuǎn)程項目主庫為 upstream
cd aita3 git remote add upstream http://git.yjf.tech/dev/aita3.git git remote -v // 查看遠(yuǎn)程 源庫丁鹉,和 上游庫信息
本地工作電腦切換到工作分支 (如果當(dāng)前默認(rèn)分支已經(jīng)是工作分支,則本步驟不需要,一般情況下當(dāng)前默認(rèn)分支是 master)
下面假設(shè)當(dāng)前默認(rèn)分支是 master悴能,但目標(biāo)工作分支是 dev揣钦,所以需要將 remotes/origin/dev checkout 出來成為本地分支 dev
git checkout -b dev remotes/origin/dev ;
四 、項目主庫代碼同步到本地工作庫和遠(yuǎn)程fork庫
在需要獲取主庫最新代碼時候從遠(yuǎn)程上游主庫獲取主庫最新代碼
git fetch upstream // 從upstream中獲取最新代碼漠酿,但是不做任何合并動作冯凹,此命令不影響當(dāng)前本地工作分支-
將拉到本地的上游庫最新代碼合并到本地當(dāng)前工作分支
git merge upstream/dev // 將upstream分支dev合并到本地當(dāng)前分支
// 注意 : 上面命令假設(shè)本地分支為 dev 并且對應(yīng)到 upstream/dev, 如果本地分支為 master 并且對應(yīng) upstream/master, 對應(yīng)命令行應(yīng)該為 git merge upstream/master
將本地最新的代碼推送到遠(yuǎn)程個人fork庫
git push
五、 個人 fork庫代碼同步到項目主庫
一旦本地個人工作庫中編輯了一些內(nèi)容炒嘲,經(jīng)過 commit/push 到遠(yuǎn)程個人fork之后谈竿,需要將遠(yuǎn)程個人fork庫代碼同步到項目主庫,其他人才能看到你最新的代碼變化摸吠,這一目的通過在遠(yuǎn)程個人 fork 庫中創(chuàng)建新的 merge request 并經(jīng)過項目主庫審批人審批通過完成空凸;
遠(yuǎn)程個人fork庫中創(chuàng)建 merge request
個人fork庫中創(chuàng)建 merge request 的地址類似于 : http://git.yjf.tech/sclcoder/aita3/merge_requests將創(chuàng)建好的 merge request 發(fā)送給項目主庫審批人
要發(fā)送的 merge request 使用其 URL 地址形式 : http://git.yjf.tech/dev/aita3/merge_requests/5項目主庫審批人 review 代碼和審批 merge request
項目主庫中待審批 merge request 列表的地址類似于 : http://git.yjf.tech/dev/aita3/merge_requests
如果有多個待審批 merge request 的話,審批人在這個地址可以看到各個 merge request寸痢,
點開某個 merge request (瀏覽器地址欄中URL類似于 : http://git.yjf.tech/dev/aita3/merge_requests/5 ) 呀洲,
可以看到 ACCEPT MERGE REQUEST 按鈕,也可以進(jìn)行代碼 review
六、 如果遠(yuǎn)程代碼庫增加分支(例如backup分支)道逗,自己遠(yuǎn)程庫已經(jīng)fork對應(yīng)的遠(yuǎn)程庫代碼了兵罢,也就是缺少backup分支,自己本地庫也缺少backup分支滓窍,可以如下操作
git fetch upstream (遠(yuǎn)程代碼庫)
git checkout backup (切換本地backup分支卖词,不存在則創(chuàng)建一個)
git merge upstream/backup (遠(yuǎn)程upstream合并到本地backup)
git push origin backup:backup 提交本地backup分支 作為 origin 遠(yuǎn)程的backup分支(git push origin test:master // 提交本地test分支 作為 遠(yuǎn)程的master分支)