切换到其他分支时,如果有未提交的更改,可能会发生冲突。我想切换分支,但保留修改后的文件,而不是提交更改或使用git stash(这可能会导致冲突)。
这种方式对我使用的工作流程更直观,因为更改的文件通常代表文件的最新版本。有时我切换到另一个分支进行微小的更改。我还不想在当前分支上提交我的更改,因为它们不完整。一个小的更改可能是需要在具有部分提交的其他分支上提交的单个函数,而同一文件中的其他更改应保持原样。此外,我不想使用存储,因为在另一个分支上应用存储可能会导致冲突。此外,一次或两次,我忘了应用隐藏的更改,并且由于担心丢失数据,我经常不会丢弃存储。由于我使用了许多临时分支,这导致了一个杂乱的历史记录,引用了我已经删除的分支。
我知道这在技术上是可行的,因为我可以创建所有已修改文件的临时副本,重置工作副本,切换到其他分支并将临时文件移动到工作副本。所以我可以创建一个函数来做到这一点。但是,是否已有可用或更简单的解决方案?
答案 0 :(得分:1)
我写了两个脚本来实现我的目标。到目前为止他们工作正常。使用git-switch
,您可以切换到分支,它将保留所有已修改文件的内容。
它基于gitstash
,如果修改完整文件可以存储它们,或者通过覆盖当前文件来恢复它们。
git switch mybranch2
与:
相同gitstash stash myStash
git switch mybranch2
gitstash pop myStash
在进行交互式rebase时, gitstash
也很有用。您可以使用它来保存更改,然后执行rebase,并恢复之前的文件。然后,您可以简单地保存文件,而不必解决冲突。如果您在rebase期间进行了未在当前隐藏版本中反映的更改,则可以使用smartgit或eclipse之类的工具将文件与HEAD修订版进行比较并包含更改。这在我的体验中更加舒适,因为您不必删除任何冲突标记。
此外,您可以使用gitstash apply myStash
申请藏匿或使用gitstash list
列出可用的藏匿处。
优点:
切换分支时,请始终保留当前版本的文件。
无需手动git stash
您的更改。
无需解决冲突。
在rebase之后避免使用冲突标记。
GIT-开关: https://gist.github.com/anonymous/7f9e457335ff1d9f4c24
gitstash: https://gist.github.com/joe42/984fb415942b67ddf70f