如何同步"阴影"带有主存储库的git存储库"偷偷地"

时间:2016-09-07 11:58:31

标签: linux git macos bitbucket

我有一个客户端,我通过git存储库工作。我不想让他知道我部分使用其他开发人员。因此,我创造了一个"影子"我的开发人员正在使用的存储库。

如何同步"影子"存储库与主存储库,以便主存储库不知道这发生了什么?

  • 我无法与git命令合并,因为这将揭示我真正做过的事情。
  • 我可以复制并粘贴所有文件,但是在git中可以看到我删除了所有文件并替换为具有相同名称的新文件。这看起来不太好。
  • 我的客户正在使用bitbucket。我可以给其他开发者我的bitbucket登录,但我想避免这样做。
  • 实际上工作的是,我可以在主存储库中打开文件,删除内容然后粘贴更新的代码。然后我可以提交,看起来如果我直接在主存储库中完成了工作。但这很费时间(时间是我没有太多的东西)。

我可以采用不同的方式偷偷地"将文件内容从影子库复制到主存储库?有没有我可以使用的linux / osx命令替换文件的内容而不删除并重新创建文件(然后我可以递归使用)?是否有一个git-command可以在不留下我实际做过的证据的情况下实现这一目标?

2 个答案:

答案 0 :(得分: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

这对于其他开发实践非常有用,例如版本控制实验室数据,本地开发实用程序,工作日志以及其他“错误”。似乎与源代码一起累积的文件,但不应该随其存档。

答案 1 :(得分:0)

在第一个回答出错后,我觉得有必要再试一次。

尝试在子开发者分支中读取并使用git差异比较/合并到main。请参阅'diff.external'的'git help config'。我使用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记忆棒将分支转移到我的实验室机器的方法。我没有尝试使用远程连接。