Git:更新文件夹(拉还是取?),保留本地更改(不覆盖)

时间:2018-08-16 18:54:03

标签: git tortoisegit

我想要一种更简便的方法来将文件夹更新为树中的最新更改,但是保留所有冲突版本。

我已经可以使用以下三种方法来完成此操作。

方法A:

  • A1。隐藏更改,包括未跟踪的文件
  • A2。拉
  • A3。藏起来流行
  • A4。检查stash pop错误消息以删除未跟踪的文件,以便stash pop可以覆盖
  • A5。再次藏起来
  • A6-N。经历每一次冲突,告诉git使用我的副本并将冲突标记为已解决

方法B:

  • B1。隐藏更改而没有未跟踪的文件
  • B2。拉
  • B3。查看拉出错误日志,找出哪些未跟踪的文件将被覆盖以临时重命名它们
  • B4。再次拉动
  • B5-N。经历每一次冲突,告诉git使用我的副本并将冲突标记为已解决
  • BN + 1-N + X。浏览以前临时重命名的每个文件,删除旧文件,然后将临时文件重命名回原始名称

方法C:

  • C1。将存储库克隆到新文件夹中
  • C2。删除所有文件和文件夹
  • C3。从工作目录复制或移动所有文件和文件夹

就时间而言,方法C是最快的。但是,这似乎不是使用git的正确方法。请告诉我,我可以执行一个简单的命令来完成此操作!

谢谢!

2 个答案:

答案 0 :(得分:0)

我建议这样做:

git pull --rebase --autostash

然后解决冲突,直到“ git status”看起来很高兴(您的单元测试通过!)。

此处有更多信息(博客文章):Too much with git pull --rebase

这是另一个想法:

方法D

  • 将树中的所有内容作为新提交提交。

  • git pull --rebase -X theirs

  • git reset --soft HEAD~1

rebase上的“ -X他们的”使它更喜欢您遇到冲突的大块的版本。与常规合并相比,“他们/我们的”策略在重新定基时会被颠倒,因此尽管“我们的”也需要指定“他们的” “就是您要保留的东西。

答案 1 :(得分:0)

简单地完成临时工作呢?

然后,您可以简单地执行以下操作: git pull --strategy-option ours