Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git最佳实践:如何经常在分支之间切换并避免多次提交?_Git_Branch - Fatal编程技术网

Git最佳实践:如何经常在分支之间切换并避免多次提交?

Git最佳实践:如何经常在分支之间切换并避免多次提交?,git,branch,Git,Branch,我正在开发一个验证软件。 我继续使用主分支代码,它总是准备好启动测试。 因此,我在其他分支(devforex)中开发了新特性。 这是经典的git工作流 我担心的是,我每天需要在master和dev之间切换10次,因为设计师让我检查他们的更新 目前我只知道一种方法: 用消息“需要回归”提交我在dev上的工作 切换到主分支 运行回归并给出反馈 重新打开dev并继续工作 这很烦人,因为在dev分支上创建了无用的历史记录 是否有另一种简单的方法(我是初学者)来避免开发分支上的多次提交 谢谢你的帮助 在切

我正在开发一个验证软件。 我继续使用主分支代码,它总是准备好启动测试。 因此,我在其他分支(devforex)中开发了新特性。 这是经典的git工作流

我担心的是,我每天需要在master和dev之间切换10次,因为设计师让我检查他们的更新

目前我只知道一种方法:

  • 用消息“需要回归”提交我在dev上的工作
  • 切换到主分支
  • 运行回归并给出反馈
  • 重新打开dev并继续工作
  • 这很烦人,因为在dev分支上创建了无用的历史记录

    是否有另一种简单的方法(我是初学者)来避免开发分支上的多次提交


    谢谢你的帮助

    在切换分支之前,请执行以下操作。这将以一种易于恢复的方式记录您正在进行的工作的当前状态。当您切换回dev分支时,执行git stash pop。这将重新应用这些更改,并删除隐藏内容,使其不会保留在您的历史记录中。

    我认为
    git-stash
    是您所需要的。有关于它的帮助。

    git clone
    您的主存储库,并从那里运行回归测试。
    记住运行
    git pull
    来检索更新。永远不要提交到克隆的存储库(或者准备尽快将其合并回主存储库)。

    这里有几条好建议。我的第一个想法是有两个克隆,一个在dev上,一个在master上。只需更改目录(类似于Hydroneaud所说的)

    如果您只想运行回归,另一种方法是使用git archive获取快照并使用它进行测试。转到空目录并执行以下操作:

    git --git-dir=/my/dev/clone/.git archive master | tar xvf -
    

    然后构建和测试。当然,将其放在脚本中是有意义的。

    如果您不想隐藏(这是正确的解决方案),或者如果您意外提交,您有两种选择,要么
    git reset HEAD^
    这样提交不会被计算,更改不会丢失,要么在完成工作后,
    git commit——修改
    ,这样您就可以在不创建新提交的情况下添加提交,并且您还可以更改提交消息。一开始这是我的想法。当dev分支上的下一个功能准备就绪时,尝试更新所需的提交回归。但我确信有更好的办法。谢谢你的提交技巧。我以为
    --ammend
    只用于文本!现在我知道了一点更有力的…谢谢你的解释。我使用
    隐藏
    而不是
    克隆
    ,因为出于某些原因,在我的环境中复制文件夹并不是那么简单。
    克隆
    似乎也是一种好方法。很高兴知道这个解决方案。不幸的是,使用这个解决方案对我来说并不容易。谢谢如果我说这是一种不使用
    clone
    命令克隆主分支的方法,我是否理解正确?谢谢链接。这将是有益的!