在瞬息萬變的腳本開發環境中,頻繁的更新和協作輸入使得保持效率和一致性變得特別困難。本次演講將展示 Git 軟體在腳本協作方面的強大功能,並提供常見問題的解決方案,例如意外刪除、版本控制以及手動備份的繁瑣。
Git 是團隊協作的必備工具,它允許多個貢獻者同時參與專案。借助 Git,每次更改都會自動進行版本控制,從而提供強大的歷史記錄,使團隊能夠輕鬆地追蹤、回滾和審查修改。此外,Git 的自動備份功能可確保您的工作即時安全,消除資料遺失的風險,並提高整體效率。
我們希望推廣 JMP on Git 的應用。我叫 Britta Silbersack,來自羅氏診斷公司,我的工作是為我們的科學家提供 JMP 腳本解決方案的支援。我剛開始從事這項工作時,認識了 Bernd,他當時是羅氏的顧問。現在我們再次見面,一起做了這個演講。
我叫伯恩德‧海寧 (Bernd Heinen)。有些人可能認識我,我曾經是 JMP 的高級系統工程師。現在,我是一名顧問,幫助客戶理解和應用統計學,或指導他們使用 JSL。我認識了布里塔 (Britta)。不久前,我們聊起了編程,覺得推廣使用 Git 程式碼庫進行 JSL 開發是個好主意。
什麼是 Git? Git 是分散式版本控制系統。您可以將 JSL 腳本儲存到 Git 管理資料夾中,然後可以使用許多功能來協助您管理腳本,讓您的工作更輕鬆。它會在不同的時間點為您的腳本建立快照。它可以幫助您組織備份、執行版本控制、支援協作以及記錄您的工作。
當你獨自進行程式設計工作時,你可以充分利用 Git 的所有優勢。在這種情況下,你不需要太多的基礎設施。建議在遠端伺服器上保留一份副本以作備份。 Git 的真正威力體現在協作環境中。團隊成員可以共同開發同一個程序,將各自的程序版本推送到程式碼倉庫,然後合併他們的工作。 Git 是所有操作的底層機制,其原生互動是透過命令列介面進行的。但是,有許多插件可以為 Git 提供圖形使用者介面,甚至可以擴展其功能。
我們想展示一段簡短的視頻,介紹一個典型的工作流程。這段影片並非Git的培訓視頻,而是為了激發用戶使用Git的興趣。我們力求做到簡短精煉,同時又能提供足夠的資訊來示範如何使用Git。我們將重點介紹JSL程式設計、腳本在Git中的註冊、快照的概念、倉庫的作用,以及如何合併同一腳本的不同版本等內容。
我們先來看看 Britta 的筆記型電腦。她打開 GitLab Cloud,這是 Git 的一個託管選項。她新建了一個群組,然後邀請其他人(像我)加入。這只需要點擊幾下滑鼠。在這個群組裡,她創建了一個名為 TryGit 的空專案。她填寫了預設設置,創建了項目,然後複製了鏈接,回到她的筆記型電腦上繼續操作。我們這裡使用的是 Git Extensions 的圖形使用者介面(有很多擴充功能),她貼上連結後,就可以克隆或複製倉庫了。這樣,她的筆記型電腦上就創造了一個空的工作區。
現在,她當然是用 JMP 編寫 JSL 腳本。完成後,她將其保存到 Git 管理的資料夾中。然後,她建立一個提交(即快照),並將當前狀態推送或上傳到 GitLab 的 Web 倉庫。
現在我們來看看Bernd的筆記型電腦,他使用GitLab遠端工作。當我建立工作小組時,Bernd收到了一封來自Git的電子郵件。他很好奇,點擊了郵件中的連結訪問遠端倉庫。他查找了項目,當時倉庫裡還沒有任何內容。他複製了鏈接,並按照相同的步驟操作。他透過SSH加密的URL克隆了倉庫,並確定了克隆後的文件應該存放在筆記型電腦上的哪個位置。他使用倉庫中的檔案名稱作為資料夾名稱,然後打開了資料夾。
不出所料,它只顯示一個空的工作區。不幸的是,我又接到一個緊急電話,於是我讓 Bernd 繼續工作。我上傳 JSL 程式碼後,他拉取或下載了該專案的當前狀態。他用 JMP 打開它並擴展程式。他將更改保存到同一個文件中。然後他切換到 Git Extension 並創建了一個新分支。這樣 Git 就可以追蹤更改。提交或保存當前狀態後,Bernd 可以看到程式被添加到了哪裡。他還將狀態推送到代碼倉庫。點擊“檢查”,然後切換到 GitLab。在網頁上,可以看到一個新的分支。他將焦點設定到該分支並創建了一個新的合併請求。
在合併請求中,我指定 Britta 為審核人,並給她發送了一則訊息。這則訊息或相關訊息已自動透過電子郵件發送給她。我們現在正在查看她的筆記型電腦。她收到了這封郵件,點擊連結進入代碼倉庫,看到了合併請求。她導航到那裡,閱讀並確認,最終確認了我的更改。 Git 顯示了變更發生的位置,合併完成。
現在,兩個不同的分支又合併回了主分支。布里塔也重新回到了專案組,我們決定並行處理不同的任務。這次拉取操作為我們兩台電腦上的開發奠定了相同的基礎。你可以看到,在布里塔的例子中,她創造了一個新分支。這樣 Git 就能追蹤她的更改。我在我的電腦上也做了同樣的事情——這裡沒有顯示——然後我們繼續各自的程式設計工作,每個人都在各自的程式版本上進行開發。
我們各自提交或建立程式快照。請注意,與前一個快照相比的差異已高亮顯示。我們將各自的分支推送到程式碼倉庫。
布里塔用筆記型電腦查看網頁上的程式碼倉庫,發現兩個分支都在那裡。她在自己的分支上添加了一條評論,然後創建了一個合併請求,並指定我為審核者。
伯恩德現在遠端辦公,他用筆記型電腦上網,打開合併請求並批准了它。他切換到主分支。然後他把程式的新狀態拉取到筆記型電腦上,將焦點設定到他的分支,並開始在那裡進行合併。他想把主分支合併到他的「Fit a Model」分支上。天哪,衝突了。
還有一些工具可以幫助緩解這種情況。 Bernd 使用 meld 工具合併程式的不同版本。在這裡你可以看到很多差異。你可以輕鬆地識別更改、刪除重複項、插入一些部分以及複製貼上其他內容。他保存了不同的更改,再次提交,然後推送。現在我們都可以拉取目前版本的程序,並執行包含兩個部分的完整程序。
JMP 使用者應該會喜歡的一點是,它能將整個開發過程及其當前狀態視覺化。雖然它並非 Git 本身的全部功能,但它整合了眾多提供 Git 互動式使用者介面的工具之一。
總之,Git 設定簡單,使用方便。它能輕鬆實現備份,提供強大的版本控制,並簡化與同事協作編寫腳本的過程。希望我們至少能讓大家對 Git 的用法、優點和易用性有所了解。現在就輪到你開始使用 Git 了,或是最晚回到辦公桌後也可以。