5

我在三个不同的工作站上工作。我希望能够在编码会话中间离开工作站,稍后在另一个工作站上恢复这项工作。鉴于代码是通过远程 git repo 共享的,我想使用 git 来共享这个未完成的工作。

实际上,未完成的工作意味着

  • 有更改的文件,
  • 有新的未跟踪文件,
  • 有被删除的文件。

大多数情况下,这些更改是临时的:并非所有更改和大多数未跟踪的文件都会在最终提交中完成。未跟踪文件的一个示例是复制了 20 处略有不同的修改以用于测试目的的测试文件;我只在处理某个问题时才关心所有这些文件,并且我不想在切换到另一个工作站时浪费时间重新生成它们。

我见过其他使用分支来推动这些更改的问题和解决方案:虽然我对此很满意,但问题是这些分支每次都会被重写,需要git push --force(我不太喜欢--force)或允许它们成为随着时间的推移非常混乱。

我想要的是一个简单的命令或 git 别名,它允许我存储工作目录的当前状态,而不会“过多地”弄乱 git 历史记录。必须有一个配套的简单命令或 git 别名,允许我从其他工作站下载这些临时更改。

4

4 回答 4

4

使用 git stash 将更改保存到文件中。

git stash
git stash show -p > myPatchFile

在另一台计算机上应用它们

git apply myPatchFile
于 2015-11-11T23:29:07.053 回答
1
  1. 您可以使用git add -A删除已删除的文件并添加新文件。然后将其提交到名为 say 的分支my_current_work中。使用 . 通过远程仓库交换它--force。您可以共享一个新的遥控器,该遥控器仅供您使主仓库更清洁。或者,如果您在工作站之间有网络链接,您可以直接在它们之间推送/拉取更改。在将您的工作合并到主分支之前,您rebase -i需要清理提交历史记录。

  2. 作为远程 repo 交换的替代方法,您可以通过电子邮件 ( git-send-email) 发送补丁。

于 2012-04-19T12:21:59.380 回答
0

您可能可以使用 stash,但我不确定它是否适合。

一种选择是创建一个提交,该提交将添加所有需要的文件,并在需要时挑选它,并在推送到公共 repo 之前使用交互式 rebase 将其删除。

于 2012-04-19T11:05:43.653 回答
0

保留个人功能分支(最好在个人存储库中),提交所有内容,不要重写历史记录,用于git commit --fixup=<commit>更改提交引入的不需要的更改,当您的日常工作或功能完成时,只需git rebase -i将此分支放入主功能分支或主分支。

于 2012-04-19T12:00:06.567 回答