通过Git共享未完成的工作(uncommited和新文件)

时间:2012-04-19 10:57:46

标签: git

我的工作来自三个不同的工作站。我希望能够在编码会话中留下工作站,然后在另一个工作站上恢复这项工作。鉴于代码是通过远程git仓库共享的,我想使用git来分享这个未完成的工作。

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

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

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

我已经看到其他问题和解决方案使用分支来推动这些变化:虽然我对此感到满意,但是每次都会重写这些分支的问题,需要git push --force(我不像许多--force或者让它们在一段时间内变得非常混乱。

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

4 个答案:

答案 0 :(得分:3)

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

git stash
git stash show -p > myPatchFile

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

git apply myPatchFile

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

你可能会使用藏匿处,但我不确定它是否合适。

一个选项是创建一个提交,它将添加所有需要的文件,只需在需要时选择它,然后在推送到公共仓库之前使用交互式rebase将其删除。

答案 3 :(得分:0)

保留个人功能分支(最好是在个人仓库中),提交所有内容,不重写历史记录,使用git commit --fixup=<commit>更改提交引入的不需要的更改,以及何时完成日常工作或功能只需git rebase -i这个分支进入主要功能分支或主分支。