git 两个开发人员的工作流程
git workflow with two developers
我有一个问题:git 2 个开发人员的工作流程。我已经读了很多,但我仍然遗漏了一些东西。
所以我在一个项目上与另一个开发人员合作。我们每个人都有本地开发环境(vagrant),并且有一个阶段服务器,我们都将我们的提交推送到那里。现在我们在舞台服务器上都有单独的回购协议,所以他有他的 pulls/pushes 反对,我有我的 pull/push 反对。
他做出更改后,我让他推送到舞台,然后我登录到舞台服务器,转到他的存储库并 运行 fetch/merge 这样他就可以得到我所做的任何更改made,然后我将他的合并提交推送到我的 repo,以便我有他的更改。
我开始是在舞台服务器上使用裸仓库,但它不允许我 fetch/merge 使用裸仓库。所以我切换到非裸仓库,现在我收到一个错误,我无法从开发环境推送到阶段仓库,因为主分支已检出(这不是裸仓库的问题)。我在 stage repos 上使用 'receive.denyCurrentBranch ignore' 选项解决了这个问题,但我觉得也许我只是做错了什么。
谁能告诉我这个设置哪里出了问题?
在服务器可用时使用 Git 与极少数开发人员共享代码的最简单方法是为服务器中的每个用户创建一个裸存储库,每个人都具有读取权限,但只有所有者具有写入权限(多用户写入权限并不简单)。使用 ssh 为每个用户设置一个帐户非常容易(看起来您已经有了类似的东西)。
然后,为了将代码发送给其他人,您将其复制到自己的远程克隆中。
为了从其他人那里获取代码,您 fetch/pull 从他们的远程克隆中获取代码(每个克隆在您的本地配置中都是不同的远程)。
服务器端没有合并。实际上,它不必是单个服务器,远程存储库也不必相互了解。
示例:
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)
...
我有一个问题:git 2 个开发人员的工作流程。我已经读了很多,但我仍然遗漏了一些东西。
所以我在一个项目上与另一个开发人员合作。我们每个人都有本地开发环境(vagrant),并且有一个阶段服务器,我们都将我们的提交推送到那里。现在我们在舞台服务器上都有单独的回购协议,所以他有他的 pulls/pushes 反对,我有我的 pull/push 反对。
他做出更改后,我让他推送到舞台,然后我登录到舞台服务器,转到他的存储库并 运行 fetch/merge 这样他就可以得到我所做的任何更改made,然后我将他的合并提交推送到我的 repo,以便我有他的更改。
我开始是在舞台服务器上使用裸仓库,但它不允许我 fetch/merge 使用裸仓库。所以我切换到非裸仓库,现在我收到一个错误,我无法从开发环境推送到阶段仓库,因为主分支已检出(这不是裸仓库的问题)。我在 stage repos 上使用 'receive.denyCurrentBranch ignore' 选项解决了这个问题,但我觉得也许我只是做错了什么。
谁能告诉我这个设置哪里出了问题?
在服务器可用时使用 Git 与极少数开发人员共享代码的最简单方法是为服务器中的每个用户创建一个裸存储库,每个人都具有读取权限,但只有所有者具有写入权限(多用户写入权限并不简单)。使用 ssh 为每个用户设置一个帐户非常容易(看起来您已经有了类似的东西)。
然后,为了将代码发送给其他人,您将其复制到自己的远程克隆中。
为了从其他人那里获取代码,您 fetch/pull 从他们的远程克隆中获取代码(每个克隆在您的本地配置中都是不同的远程)。
服务器端没有合并。实际上,它不必是单个服务器,远程存储库也不必相互了解。
示例:
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)
...