您如何正确地进行未分级更改的开发设备?

时间:2019-02-17 13:03:49

标签: git git-stash

我正在跨2种设备进行开发。

当需要退出并使用笔记本电脑时,我通常要做的是大规模暂挂未完成的更改,提交并推动它们,以便以后可以从笔记本电脑中撤出来恢复开发。

但是,显然,仅进行一堆随机更改并将其推入一揽子提交是不明智的做法。

是否有某种方法可以在其他设备上推送 git stash ,拉出stash并使所有阶段仍待处理。

3 个答案:

答案 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。