簡體   English   中英

git-p4並從其他存儲庫中提取

[英]git-p4 and pulling from other repos

我有一台筆記本電腦和一台台式機,為此,我試圖學習使用git來針對perforce存儲庫管理我的工作。 我在桌面上成功使用了git-p4,並且可以單獨在筆記本電腦上成功使用它。 但是,我想做的一件事情是將更改從筆記本電腦“拉”或“推”到台式機,反之亦然,而無需先將它們檢入與git同步的p4分支中。

因此,這是設置兩個存儲庫的操作:1)使用git-p4克隆在桌面上安裝存儲庫。 做一些工作,對git進行幾次提交,對git-p4進行幾次提交。 所有人都按預期工作。 2)之后,在我的筆記本電腦上設置一個存儲庫,以准備在兩台計算機上進行工作。 類似地,使用git-p4克隆當前最新的p4存儲庫(現在已經檢查了幾個修訂版本,而我在(1)中做了git-p4的地方)。

現在,我希望做的是:1)在桌面上做一些工作。 將工作提交給git,但不提交給p4。 2)轉到筆記本電腦,然后從桌面存儲庫中執行git pull...。 3)繼續在筆記本電腦上工作,並定期執行git。 4)(可選)從筆記本電腦提交到p4 5)(可選)推到桌面(或從筆記本電腦拉到桌面)並在桌面上繼續工作,依此類推。

基本上,我希望能夠在筆記本電腦和台式機之間來回推拉東西,而無需實際登錄p4。

這聽起來像應該可行嗎? 如果是這樣,上面是否有我在做錯的步驟?

這是不斷發生的情況:當我嘗試執行上面的(2)中的“拉”操作時,我收到一條錯誤消息,指出存在沖突-這些沖突與p4分支的第一個簽出之間的更改有關,並且創建第二個git-p4存儲庫的時間。 換句話說,它們似乎是更改的重播,這些更改本來應該在第二個存儲庫所包含的代碼中進行的,但是由於某些原因,事實並非如此。

我對git還是很陌生,所以我希望我的問題不是瘋狂的愚蠢或無法理解。 在此先感謝您提供的任何幫助。

問題是您的兩個存儲庫(台式機和筆記本電腦)沒有意識到它們通過Perforce相互關聯。 普通的git-p4克隆將從樹的頂部獲取,因此,您將為相同的更改使用不同的提交標識符。 這是因為git“提交”包含有關其父級的信息。

最簡單的解決方案是按以下方式工作:

  1. 在桌面上創建git-p4克隆。
  2. git clone從桌面git clone到筆記本電腦。

現在,您的筆記本電腦和台式機都將具有Perforce的共同歷史記錄。 (您可以通過在這兩個步驟之前和之后的git log查看提交標識符是否不同來驗證這一點)。

在這之后,您應該能夠在兩個存儲庫之間切換而不會發生沖突。

實際上,您也可以在任一位置進行git p4 syncgit p4 rebase ,因為git-p4足夠聰明,可以檢測到對方的工作並繼續。 如果可以的話,如果我沒記錯的話,您的筆記本電腦還將嘗試從原始服務器(您的台式機)上進行git pull

其他兩點建議:

  • 在這兩個存儲庫之間不要使用git push 推送到非裸存儲庫通常是不安全的,即具有工作樹的存儲庫,例如您在此處描述的存儲庫。 如果您進行這種推送,則索引將不同於工作樹,並且git status類的東西(因此git commit等)將無法按您期望的方式工作。
  • 將Perforce放在單獨的分支上(我使用master ),並在主題分支上進行所有開發。 只拉到這些分支。 當您執行git p4 syncrebase ,請切換回您的master分支。 然后從master向下合並到您的主題分支。 這有助於使上游歷史記錄非常清晰,並與您在git中所做的工作分開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM