2016-09-07 154 views
3

我有一個客戶端,我通過git存儲庫工作。我不想讓他知道我部分使用了另一個開發人員。因此,我創建了一個我的開發人員正在使用的「影子」存儲庫。如何將「影子」git存儲庫與主存儲庫「祕密地」同步

如何將「shadow」存儲庫與主存儲庫同步,以便主存儲庫不知道發生了這種情況?

  • 我不能合併一個git命令,因爲這將揭示我真的已經做了什麼。
  • 我可以複製和粘貼所有文件,但在git中可以看到我刪除了所有文件,並用具有相同名稱的新文件替換。這看起來不太好。
  • 我的客戶正在使用bitbucket。我可以給其他開發者我的bitbucket登錄,但我想避免這樣做。
  • 實際工作的是,我可以在主資源庫中打開一個文件,刪除內容,然後粘貼更新後的代碼。然後我可以提交,看起來是我是否直接在主存儲庫中完成了這項工作。但是這很費時間(而且時間是我沒有太多的東西)。

有沒有不同的方法可以「暗中」將影子存儲庫中的文件內容複製到主存儲庫?有沒有可以用來代替文件內容而不刪除和重新創建文件(然後我可以遞歸使用)的linux/osx-command?是否有一個git-command使得這一切成爲可能而不留下我實際上做了什麼的證據?

+0

你說這個問題的方式會使你的操作看起來很陰暗,並且可能會阻止人們回答。 – Thilo

+0

它可能是,但我真的不能想到另一種方式來說這個問題,將它放在一個更好的光線... – EricC

+0

我upvoted這個,因爲它導致了一個答案,教我的東西,我從來不知道這將是非常有用的在非陰涼的情況下!如果我問了這個問題,我剛剛說過「我怎麼不與我的客戶分享本地修改歷史記錄」,並將其留在那裏;) – GreenAsJade

回答

3

使用命令行,您可以使用不同git存儲庫修訂的同一組本地文件。只需使用GIT_DIR環境變量。 Git存儲庫是完全獨立的,可以跟蹤來自同一目錄的文件。

rem set Git to use the sub-developer's git repository 
set GIT_DIR=/path/to/sub/repository.com 

rem verify which repository that you are on 
git rev-parse --git-dir 

rem pull the sub-developer's latest 
git pull 

rem merge, commit, change, push, change branches, whatever 
rem ... when the code is the way you want it 

rem switch to client repository 
set GIT_DIR=/path/to/client/repository.com 

rem bring main repository up to date 
git commit -m"changes brought over from sub-developer" 

rem push the updated code to the client repository 
git push 

這是其他發展實踐有用的,比如版本實驗室數據,當地發展事業,工作日誌,和其他「雜項」文件似乎與源代碼積累,但不應該與它存檔。

+0

哦,這比我所希望的還要好。謝謝:) – EricC

+0

有些東西不打算計劃。我有一個目錄與現有的原始存儲庫。當我做'$ git rev-parse --git-dir'時,我得到了答案'.git'。然後我(第一次)'設置GIT_DIR = https:// myusername @ bitbucket.org/myusername/sub-developer-repository.git',然後'$ git rev-parse --git-dir'我得到與'.git'之前的答案相同。我如何設置這個按照你描述的方式工作? – EricC

+0

哦,'set'命令不適用於osx,在這種情況下,選項是'export'。 – EricC

0

我的第一個答案出錯後,我覺得不得不再次嘗試。

嘗試在子開發者分支中閱讀並使用git差異比較/合併到main。請參閱'git help config'for'diff.external'。我使用diffuse.exe和批處理文件來映射參數。

工作流程看起來像這樣。

rem make a remote to the sub 
git remote add MYSUB https://path/to/sub/repository.com 

rem see what branches are there 
git remote show MYSUB 

rem get the branch from the subdeveloper 
git fetch MYSUB CurBranch:CurBranch 

rem view/manually merge just the modified files 
git diff --diff-filter=M MYSUB/CurBranch 

rem cleanup 
git branch -D MYSUB/CurBranch 
git rm MYSUB 

rem push to main site 
git push 

這是我使用的分支轉移到我的實驗室設備,通過USB記憶棒的方法。我沒有用遠程連接嘗試過。

相關問題