我有一个客户端,我通过git存储库工作。我不想让他知道我部分使用其他开发人员。因此,我创造了一个"影子"我的开发人员正在使用的存储库。
如何同步"影子"存储库与主存储库,以便主存储库不知道这发生了什么?
我可以采用不同的方式偷偷地"将文件内容从影子库复制到主存储库?有没有我可以使用的linux / osx命令替换文件的内容而不删除并重新创建文件(然后我可以递归使用)?是否有一个git-command可以在不留下我实际做过的证据的情况下实现这一目标?
答案 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记忆棒将分支转移到我的实验室机器的方法。我没有尝试使用远程连接。