Py学习  »  Will Bickford  »  全部回复
回复总数  2
7 年前
回复了 Will Bickford 创建的主题 » 在远程存储库中使用Git的正确方法是什么?

听起来是Git的一个很好的用例。要记住的一点是Git是一个分布式版本控制系统。每个开发人员都有自己的存储库,在将工作发布到生产环境之前,您需要在其中设置一个集中的“源站”存储库,在那里共享工作。

下面链接的是一个流行工作流的介绍:Gitflow。要记住的主要一点是,您需要在源代码历史记录中标记特定的点以进行测试,然后在测试成功后才将这些更改合并到master中。

https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

建议的分支设置

为一个3人的团队简化Gitflow,您可能需要从两个分支开始:一个分支用于要生成的每个环境 建造 为了。

  • master=>生成部署到生产环境中
  • dev=>生成部署到测试

样本更新程序

下面的步骤概述了一种发布到测试和生产环境的方法。

  • 将更改提交到 dev 把它们推到原点
  • 开发完成后,标记 DEV 带版本的分支(例如 dev/1.0.0 )
  • 将该提交推送到测试环境并验证它
  • 如果测试通过,则合并 偏差/1.0.0 master ,生成并部署到生产环境中
  • 如果测试失败,请使用上面的步骤处理另一个修复。
  • 你可能最终会合并 dev/1.0.2 例如,在下一次正式部署之前
  • 当你推动生产,标签 master/1.0.2 所以你知道它已经上线了

通常,您的生产环境应该通过不直接涉及Git的部署过程进行更新。您将需要设置一个从存储库中的特定标记版本部署代码的构建。您可以对该部分使用现有的FTP更新过程。

阅读材料

这里有更多的链接可以开始。希望这有帮助!

7 年前
回复了 Will Bickford 创建的主题 » 不允许从Git中的分支进行分支

git master

#!/bin/bash
cmd=$1
opt=$2
branch=$3
parent=$4
if [[ $cmd = "checkout" ]] && [[ $opt = "-b" ]]; then
  if [ -z "$parent" ]; then
    parent="master"
  fi
  /usr/bin/git checkout -b $branch $parent
else
  /usr/bin/git "$@"
fi

chmod +x /path/to/git-wrapper.sh
alias git=/path/to/git-wrapper.sh
mkdir test
cd ./test
git init
echo "First line" >readme.md
git add readme.md
git commit -m "Initial commit"
git checkout -b test1
echo "Second line" >> readme.md
git commit -am "Second line"
git checkout -b test2
echo "Third line" >> readme.md
git commit -am "Third line"
git checkout master
git branch -a
git log
git merge test1
git merge test2

Initialized empty Git repository in ...
[master (root-commit) 11bd292] Initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 readme.md
Switched to a new branch 'test1'
[test1 4ace272] Second line
 1 file changed, 1 insertion(+)
Switched to a new branch 'test2'
[test2 54b7fff] Third line
 1 file changed, 1 insertion(+)
Switched to branch 'master'
* master
  test1
  test2
Updating 11bd292..4ace272
Fast-forward
 readme.md | 1 +
 1 file changed, 1 insertion(+)
Auto-merging readme.md
CONFLICT (content): Merge conflict in readme.md
Automatic merge failed; fix conflicts and then commit the result.

test1 test2