我有一个问题:2位开发人员的git工作流程。我读了很多但是我还在遗漏一些东西。
因此,我与另一位开发人员合作开展项目。我们每个人都有本地开发环境(vagrant),并且有一个舞台服务器,我们都在推动我们的提交。现在我们都在舞台服务器上有单独的回购,所以他有他的拉/推,我有我的拉/推。
在他做出更改之后,我让他推进到舞台,然后我登录到舞台服务器,转到他的repo并运行fetch / merge以便他获得我所做的任何更改,然后我推送他的合并提交我的回购,以便我做出改变。
我开始在舞台服务器上使用裸存储器,但它不允许我使用裸存储器获取/合并。所以我切换到非裸仓库,现在我得到一个错误,我无法从开发环境推送到舞台回购,因为主分支被检出(这不是裸仓库的问题)。我使用舞台回购中的'receive.denyCurrentBranch ignore'选项解决了这个问题,但我觉得我可能只是做错了。
任何人都可以告诉我这个设置出错了吗?
答案 0 :(得分:0)
当服务器可用时,与极少数使用Git的开发人员共享代码的最简单方法是为服务器中的每个用户创建一个裸仓库,每个用户都具有读访问权限,但只有所有者具有写访问权限(多用户写访问权限并不简单)。使用带有每个用户帐户的ssh非常容易设置(看起来你已经有了类似的东西)。
然后,为了将代码发送给其他人,您可以将其发送到您自己的远程克隆。
为了从其他人那里获取代码,您可以从远程克隆中获取/提取代码(每个克隆都是本地配置中的不同遥控器)。
服务器端没有合并。实际上,它不必是单个服务器,远程存储库不必彼此了解。
示例:
user1$ git clone ssh://server/home/user1/git/project
...
user1$ cd project
user1$ git remote add user2 ssh://server/home/user2/git/project
user1$ git fetch user2
...
user1$ git branch -a
* master
origin/master
user2/master
user1$ git commit -m'Commit from user1' --allow-empty
user1$ git push origin master
user2$ git clone ssh://server/home/user2/git/project
...
user2$ cd project
user2$ git remote add user1 ssh://server/home/user1/git/project
user2$ git pull user1 master
...
user2$ git log --decorate
sha1... (master, user1/master)
Commit from user1
sha1... (origin/master)
...