[英]Commits on github are linked to right user while pushes are linked to wrong user
[英]GitHub client as a Progressive Web App: how to deal with commits and pushes?
我之所以問這個問題,是因為我想全力以赴,如何處理此類問題並尋求社區的建議。 對於不認識的人,PWA可以在脫機時工作,並使用ServiceWorkers來處理請求並進行后台同步(以及其他一些工作)。
我想構建一個將成為GitHub客戶端的PWA,並希望通過其功能實現提交和推送到存儲庫的功能。 從我的角度來看,進行提交是簡單明了的,並且不會造成任何問題,因為對遠程設備沒有任何更改。
但是,進行推送時可能會出現一些問題。 用戶可能在線並且直接進行推送。 如果他不在線,則ServiceWorker會將其保留在后台,並且當有連接時,應進行推送。
如果當前用戶處於脫機狀態時其他用戶進行了推送怎么辦? Git版本控制應該處理的情況? 我的想法在任何地方都有缺陷嗎? 通過使用SW來避免遠程出現問題是否可行?
提前致謝。
對於git來說不是缺陷。 但是所有與本地計算機不同的遠程存儲庫的情況。
本地存儲庫中的用戶不應該總是處於脫機狀態(他們需要與他人合作並為遠程存儲庫做出貢獻)。 當離線用戶在線時,他們應拉入並推送到遠程倉庫(更新本地倉庫和貢獻者到遠程倉庫)。
針對這種情況的詳細步驟如下:
假設主分支原始上的提交歷史如下:
…---A---B---C master, origin/master
並且離線工作的用戶提交本地更改(提交D
和提交E
),然后提交本地提交歷史記錄,如下所示:
…---A---B---C---D---E master
|
origin/master
當另一個用戶推送更改時,將F
提交並將G
提交到遠程倉庫。
現在,如果離線用戶在線,如果他/她將更改直接推送到遠程遠程,則git將拒絕推送,因為遠程回購具有本地回購所沒有的新更改,並提示首先使用git pull
。
通常,有兩種方法可以從遠程提取更改:
以默認方式拉
在執行git pull origin master
,提交歷史將是:
…---A---B---C---D---E---M master \\ / F-------G origin/master
它將origin/master
合並到本地master
,而提交M
是合並提交。
拉底
在執行命令git pull origin master --rebase
,它將把本地更改重新設置在origin/master
的頂部。 提交歷史將為:
…---A---B---C---F---G---D'---E' master | origin/master
因此,即使用戶處於脫機狀態,他也只能在本地存儲庫上工作。 當用戶再次聯機時,他/她可以按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.