我的工作来自三个不同的工作站。我希望能够在编码会话中留下工作站,然后在另一个工作站上恢复这项工作。鉴于代码是通过远程git仓库共享的,我想使用git来分享这个未完成的工作。
实际上,未完成的工作意味着
大多数情况下,这些更改都是临时的:并非所有更改和大多数未跟踪文件都将在最终提交中完成。未跟踪文件的一个示例是为了测试目的而复制了20个稍微不同的修改的测试文件;我在处理某个问题时只关心所有这些文件,而且我不想在切换到另一个工作站时浪费时间重新生成它们。
我已经看到其他问题和解决方案使用分支来推动这些变化:虽然我对此感到满意,但是每次都会重写这些分支的问题,需要git push --force
(我不像许多--force
或者让它们在一段时间内变得非常混乱。
我想拥有的是是一个简单的命令或git别名,它允许我存储工作目录的当前状态,而不会使用git历史记录“搞乱太多”。必须有一个简单的伴随命令或git别名,允许我从其他工作站下载这些临时更改。
答案 0 :(得分:3)
使用git stash将更改保存到文件中。
git stash
git stash show -p > myPatchFile
在另一台计算机上应用它们
git apply myPatchFile
答案 1 :(得分:1)
您可以使用git add -A
删除已删除的文件并添加新文件。然后将其提交到名为my_current_work
的分支中。使用--force
通过远程仓库进行交换。您可以共享一个新的遥控器,仅供您使主回购清洁。或者,如果工作站之间有网络链接,则可以直接在它们之间推送/拉取更改。
在将您的工作合并到主分支之前,您需要rebase -i
来清理提交历史记录。
作为远程仓库交换的替代方案,您可以通过电子邮件发送补丁(git-send-email
)。
答案 2 :(得分:0)
你可能会使用藏匿处,但我不确定它是否合适。
一个选项是创建一个提交,它将添加所有需要的文件,只需在需要时选择它,然后在推送到公共仓库之前使用交互式rebase将其删除。
答案 3 :(得分:0)
保留个人功能分支(最好是在个人仓库中),提交所有内容,不重写历史记录,使用git commit --fixup=<commit>
更改提交引入的不需要的更改,以及何时完成日常工作或功能只需git rebase -i
这个分支进入主要功能分支或主分支。