我正在尝试与我的一个朋友一起使用虚拟机来进行开发。但是因为我已经初始化了git存储库并安装了git程序,所有提交都被注册为我的工作。
我们有没有办法提交并可能包含一个用户参数来了解谁在同一台机器和git文件夹上做了什么。
P.S。
谢谢大家的意见,让我明白git背后的正确理念是什么(每个回购一个人)。但我朋友和我在一个VM和一个repo上工作的主要原因是因为我们需要在VM上共享一个数据库。那么有没有办法通过这个而不反对如何设置git(每个repo一个git用户)?
答案 0 :(得分:3)
你在Git盒子上做的工作被认为是你自己的。不得不为每次提交切换用户名和电子邮件信息是不切实际的,但可以这样做。
让我明确指出不推荐这种做法。这只会让你们双方感到头疼。
在您的朋友提交之前,请为该回购调整参数user.name
和user.email
:
git config user.name "<friends-name-here>"
git config user.email "<friends-email-here>"
如果推送到远程服务器,这可能会影响身份验证,所以要小心。
那就是说,你真正想要做的就是将它推送到远程存储库,如GitHub或BitBucket,提交到你自己的本地存储库,然后合并在他们被推向上游之前,他们在一起。
答案 1 :(得分:2)
另一个应该有用的愚蠢想法:
创建2个别名&#34; tom&#34;和&#34;杰瑞&#34;在运行要运行的git命令之前配置电子邮件和提交者的名称。
这样,你们每个人都可以使用这样的git命令:
git tom commit -a -m "my commit"
和
git jerry checkout my branch
2个别名应该类似于:
tom = !sh -c \"git config --global user.name "Tom" && git config --global user.email "tom@here.org" && git $*\"
和
jerry = !sh -c \"git config --global user.name "Jerry" && git config --global user.email "jerry@here.org" && git $*\"
答案 2 :(得分:1)
Git的设计理念是每个存储库都有一个actor。颠覆这一想法将引入更多的问题,而不是解决。 如果您尝试将所有源保留在单个VM上,则可以通过在VM上创建bare repository来设置分布式工作流,部署和开发人员将其用作交互的中心点。< / p>
# Create bare repository
git clone --bare --branch master /path/to/your/existing/repo /path/to/new/bare/repo
# Create user repositories
git clone /path/to/new/bare/repo taco_john_repo
cd taco_john_repo
git config user.name "Taco John"
git config user.email "taco_john@git-scm.org"
cd ..
git clone /path/to/new/bare/repo burrito_bill_repo
git config user.name "Burrito Bill"
git config user.email "burrito_bill@git-scm.org"
# Update existing repo to use bare repo as a remote
cd /path/to/your/existing/repo
git remote add bare_repo file:///path/to/new/bare/repo
这将在VM上创建三个新存储库。设置裸存储库以允许两个开发人员将其更改推送到公共存储库,同时现有存储库可以从中获取。当然,您必须使用常用命令与远程交互来推送每个人的更改,合并冲突,并将更改拉入当前工作目录。
答案 3 :(得分:0)
是否可以在您的VM上制作两个用户帐户?如果是这样,您可以在自己的帐户下工作,但在同一个仓库中。
# Use --global to set name and email for each user:
git config --global user.name "Taco John"
git config --global user.email "taco_john@git-scm.org"
# Use --system to set configuration for both users.
git config --system core.autocrlf input
<强>临强>
<强>魂斗罗:强>
此外,我支持以前的评论者,最好还为所有用户提供单独的回购。共享一个回购将导致你一团糟和误解。如果您有资源 - 为每个用户制作单独的回购。