我正在跨2种设备进行开发。
当需要退出并使用笔记本电脑时,我通常要做的是大规模暂挂未完成的更改,提交并推动它们,以便以后可以从笔记本电脑中撤出来恢复开发。
但是,显然,仅进行一堆随机更改并将其推入一揽子提交是不明智的做法。
是否有某种方法可以在其他设备上推送 git stash ,拉出stash并使所有阶段仍待处理。
答案 0 :(得分:4)
在您随后推送的临时分支上进行提交不会破坏任何Git习惯用法。您可以稍后清除提交消息等。
如果您不打算使用实际提交,则可以将其存储起来,然后以补丁格式保存。
git stash #stash everything
git stash show -p > stash.diff #save patch-formatted stash to file
然后,您只需要将stash.diff
文件放入第二台计算机上并执行git apply stash.diff
。
答案 1 :(得分:3)
如果您一个人在分支上,不必与同事分享其历史,我建议您使用临时提交:
在分支机构的计算机1上:
# you have unfinished modifications to "save"
git commit -am "temp"
git push origin HEAD
在分支机构的计算机2上:
# get your last commit like you usually do, let's say
git pull
# now let's "uncommit" the ugly temp
git reset HEAD^
(提醒一下,没有git reset
或--soft
的{{1}}使其成为默认的--hard
模式。它使修改保留在工作树中,因此仅设置为不同提交的分支指针)
这时,您已经准备好了机器1的待处理修改,可以在准备好时进行进一步的修改,添加和“正确”提交。
最后,正如您在评论中所问的那样,是的,当您想在远程服务器上进行反射时,您必须强制采用任何一种方式(该远程服务器仍具有您在本地破坏的临时提交,然后替换为您的临时提交)。 / p>
当然要感谢torek的有用的优化。
答案 2 :(得分:1)
我会说您的问题的前提不正确:
很明显,仅进行一堆随机更改并将其推入一揽子提交是不明智的做法
不,不是。将所有更改暂存为一揽子提交,然后在另一台计算机上检索它们。
两个观察结果:
由于没有足够的时间将所有内容整理成一个可爱的合理化历史,因此担心一次全部提交所有内容,这是工作流程中的难闻气味。尽早并经常提交!以后会有时间在post-production中进行整理。
如果担心以后重写历史记录是一种反模式,因为该分支与存储库中的其他人共享,那么请勿与存储库中的其他人共享此分支。如有必要,请在另一个远程上跟踪此分支。我就是做这个的;我在github上公开公开我的工作,但是只有在我对bitbucket进行了私有配置之后,才公开了所有工作,bitbucket的分支从未被推送到github。