2016-09-07 155 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记忆棒的方法。我没有用远程连接尝试过。

相关问题