问题标签 [git-workflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
155 浏览

git - 与 Git 中的新功能混合进行重构的最佳工作流程是什么?

我一直使用 Git 作为源代码管理工具。现在我的工作流程很简单:

  • 考虑一个最小的新功能/重构
  • 编码
  • 用 HEAD 查看 diff
  • 犯罪

我想通过使其更灵活来改进此工作流程。原因是我遇到过几次以下情况,我认为这是一个典型的情况:

提交后,我开始修改工作目录以添加新功能。

我编码了一会儿,让工作目录的状态此时为A。这里重要的是状态 A 工作目录尚未准备好提交,因为新功能尚未完成。

在这一点上,我意识到最好先执行重构。承认吧,在代码修改的过程中,有时重构的需要变得很明显。

现在我需要从 HEAD 重新开始并首先进行重构。但是我不想丢失代码 HEAD -> state A 的修改。所以基本上我需要:

  • 在上次提交后尚未更改的工作目录副本中进行重构
  • 提交它
  • 在工作目录处于状态 A 时合并我已启动并停止的新功能的工作
  • 完成新功能的工作
  • 提交它

我相信这是分支可以帮助我的地方,但是我在确定正确的 git 命令时遇到了问题。我很困惑,当工作目录在提交后更改时我需要创建一个分支,我不知道处理这个问题的正确方法。

用 Git 命令来描述上述工作流程的正确方法是什么?

0 投票
1 回答
937 浏览

git - 通过 ssh 在私有服务器上的 github 之类的工作流

我在 Internet 上有一台服务器(可通过 ssh 获得),我和朋友使用它来共同开展项目。我们已经开始使用 git 进行源代码控制。我们目前的设置如下:

  • 朋友server使用git --bare init命名创建了存储库project.friend.git
  • 我克隆project.friend.gitserverproject.jesse.git
  • 然后我使用克隆project.jesse.gitserver我的本地机器上git clone jesse@server:/git_repos/project.jesse.git
  • 我在本地机器上工作并提交到本地机器。当我想将我的更改推送到project.jesse.gitserver使用的git push origin master. 我的朋友正在工作project.friend.git。当我想得到他的改变时,我会这样做pull jesse@server:/git_repos/project.friend.git

一切似乎都工作正常,但是,当我这样做时,我现在收到以下错误git push origin master

我需要担心这个警告吗?就像我说的,一切似乎都在工作。我的朋友能够从我的分支中提取我的更改。我在服务器上有克隆,因此他可以访问它,因为他无权访问我的本地计算机。有什么可以做得更好的吗?

谢谢!

0 投票
1 回答
38 浏览

git - 如何在 git 存储库中更改对象的历史内容?

我有一个本地 git 存储库,我最终计划将其作为开源发布。我最近注意到其中一个文件中有密码。显然,在发布存储库之前,我需要从整个历史记录中删除该密码。

答:有没有办法访问和修改该特定文件的所有修订的历史记录?

B:我想另一种选择是简单地发布 HEAD 的干净版本。

0 投票
1 回答
425 浏览

git - 修改已合并的 git 主题分支的最佳实践

在编写新故事时,我们在我的公司使用以下 git 工作流程:

  1. 从 master 创建一个主题分支(生产/稳定)
  2. 根据需要创建尽可能多的提交以实现功能。
  3. 对该主题分支执行 git merge --squash 到qa分支。
  4. 质量检查人员审查。
  5. 如果好,代码合并到ua分支。如果用户验收团队祝福它,它就会被合并到 master 并最终部署。
  6. 如果审核失败,开发人员需要修复。基本上在第 2 步重新启动该过程。

注意:从点代码合并到 qa 分支到 qa 拒绝/接受它的时间最长可能需要两周时间。

如果没有问题,那么代码最终会成为 master。但是,我正在寻求 QA 发现问题并且您必须修复它时的最佳实践。我想要的是最终得到一个看起来尽可能“原始”的 qa 分支。

如我所见,以下是选项:

  1. 恢复 qa 分支中的原始压缩提交,从 qa 重新设置主题分支,修复主题分支中的代码,再次将其合并到 qa 中。问题:留下 icky revert 提交。
  2. 删除现有的主题分支,从 qa 分支重新创建它,创建一个简单的提交来修复问题,合并回 qa。问题:将功能的代码更改分布在时间和地点不同的提交中。
  3. 取消对 qa 的压缩合并,将单个提交从 qa 重新定位到现有主题分支,用另一个提交修复,合并到 qa。问题:多次提交使得在移动到 ua 分支然后到 master 时很难跟踪更改。

问题:当合并代码可能需要修复时,是否有通过多个长期存在的分支(master -> topic -> qa -> ua -> master)移动单个功能的多个提交的最佳实践?

0 投票
1 回答
235 浏览

git - 如何设置这个 git 工作流程?

我希望能够设置以下 git 工作流程,但是对于要使用哪些正确命令(rebase、remote 等)感到困惑?

  1. 克隆一个开源项目,我对其 git 存储库只有只读访问权限
  2. 对项目进行更改并将这些更改保存到我的私人 github 存储库 - 让我们称之为“开发”
  3. 一旦开发更改稳定,将它们移至“暂存”
  4. 测试“暂存”后,将更改移至“生产”
  5. 每周同步远程开源项目,因为它总是在变化,然后重新开始整个过程​​。

谢谢

0 投票
4 回答
11196 浏览

git - 如何在 git 中反转特定的提交?

我想知道是否有一种方法可以快速逆转特定的提交。

diff我可以在两次提交之间生成一个或HEAD查看差异。

我如何只反转那些帅哥中的一个(或者更好的是,一组特定的帅哥)?

0 投票
10 回答
1963089 浏览

git - 从另一个分支在 Git 中创建一个分支

我有两个分支:masterdev

我想从dev分支创建一个“功能分支”。

目前在分支开发,我做:

... (一些工作)

但是,在可视化我的分支之后,我得到了:

我的意思是分支似乎合并了,我不明白为什么......

我做错了什么?

你能解释一下你是如何从另一个分支分支并推回功能分支的远程存储库的吗?

所有这些都在一个分支模型中,就像这里描述的那样。

0 投票
3 回答
3062 浏览

git - 我应该如何组织我的 Git 存储库和分支来创建网站的多个版本?

我是一个希望迁移到 Git 的 SVN 用户。我整天都在阅读文档和教程,但我仍然有未解答的问题。我不知道这个工作流程是否有意义,但这是我的情况,以及我想从我的工作流程中得到什么:

  • 多个开发人员,都在他们的工作站上进行本地开发
  • 网站的 3 个版本:Dev、Staging、Production

这是我的梦想:

开发人员在他自己的分支上本地工作,比如“developer1”,在他的本地机器上进行测试,然后提交他的更改。

另一个开发人员可以将这些更改下拉到他自己的分支中。合并开发者 1 -> 开发者 2。

当作品准备好被公众看到时,我希望能够“推动”开发、登台或生产。

或者可能

我不确定。就像我说的,我还是 Git 新手。

以下是我的主要问题:

  • 我的网站(开发、登台、生产)必须是存储库吗?他们是否必须“赤裸裸”才能成为新变化的接受者?

  • 我想要一个存储库还是多个具有多个分支的存储库?

  • 这是否有意义,还是我走错了路?

我已经阅读了很多教程,所以我真的希望有人可以帮助我解决我的具体情况。非常感谢!

0 投票
3 回答
2951 浏览

git - 用于多个暂存/生产环境的 git-flow

我正在尝试将 git-flow 应用于具有多个共享相同代码库的网站的项目。

我目前使用许多功能分支、一个开发分支、一个支持分支和许多生产分支:每个站点一个,因为每个站点都自定义了一些配置文件。

git flow 工具并没有提出很多主/生产分支,而是一个单一的。 我能做些什么?

0 投票
3 回答
42485 浏览

git - 在本地机器上设置 git 存储库

如何在本地系统上设置 git 存储库?(我在一个windoze盒子上)

这是我想要实现的设置:(一切都在我的本地机器上)

  • 主机文件夹(类似于中央存储库)
  • 客户文件夹

我想在客户端文件夹中完成我的所有开发。完成后,我想将其推送到主机文件夹。


这就是我所做的:(在 Windows 上使用 git bash)

  • cd d:/插入
  • mkdir 主机
    • 光盘主机
    • 混帐初始化

CDC:/

  • mkdir 客户端
    • 光盘客户端
    • 混帐初始化
    • git remote add origin d:/host // 在客户端文件夹中添加一些文件并提交
    • git push 起源大师

当我将东西推送到原点时,git 会吐出很多远程错误。但是,当我让我的主机成为一个裸 git 时,它会成功推送。

我不明白普通 git 和裸 git 之间的区别。从手册中,我所了解的是,裸 git 用于存储增量以及当您不想存储原始文件时。但是,我想将文件存储在主机中。我怎样才能做到这一点 ?