【问题标题】:git merge everything except one directorygit合并除一个目录以外的所有内容
【发布时间】:2015-01-08 08:21:19
【问题描述】:

我想 git 合并除一个目录之外的所有内容。所以我正在考虑做

git add --all .
git reset /bad_directory/*
git commit -m "commit message"
git pull my_project master
git push my_project master

这是正确的吗?当然,我之所以这么问,是因为我不想执行此操作并最终把事情搞得更糟。谢谢。

【问题讨论】:

  • 您在询问“合并”,但您不建议在任何地方使用git merge。请确切地说明您想要做什么,包括任何相关的分支名称。
  • 我的意思是先拉后推:这就是我喜欢合并的方式。也许是对这个词的误用,但我的意思是pull-then-push。主要关注的当然是bad_directory:我想把它排除在外。

标签: git github terminal osx-mavericks


【解决方案1】:

实现此目的的一种方法是不要将“bad_directory”添加到您的提交中,然后提交所有其他文件,然后将您的更改存储在“bad_directory”中以供以后维护:

git add #{list of files to add}
git commit -m "commit message"
git stash
git pull origin master # consider doing a --rebase here
git push origin master

您应该阅读 git-stash,但稍后您可以弹出或丢弃 stash 的内容。

git-reset 的问题是我假设你会想要做一个 git-reset --hard,你不能在子目录上做。

【讨论】:

  • git add #{list of files to add} 是不敬虔的。这就是为什么我希望有一个命令可以让我排除一个目录。
  • 然后只做git add -A 然后git rm --cached -r bad_dir
  • 问题中的 ~git add -A .;git reset bad-dir~ 可能适合他想要的,效果适合我能想象的很多情况。无论什么情况适合坏目录,在我看来,你在这里得到的 stash/stash pop 对是重要的部分,这就是解决 OP 问题的原因。我可能会提醒一下,stash pop 是一种合并,这似乎让很多人感到惊讶。
  • 同意 git-stash 是工作流程的重要组成部分,允许您合并到本地存储库而无需合并这些文件,我认为这是第一次进行重置的重点地方,有很多方法可以用不同的方式完成同一件事。
猜你喜欢
  • 2016-12-15
  • 1970-01-01
  • 2016-10-09
  • 2017-02-21
  • 1970-01-01
  • 2013-09-26
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多