【问题标题】:git checkout only those files which were commited during the concrete commitgit checkout 仅在具体提交期间提交的那些文件
【发布时间】:2014-10-20 21:24:51
【问题描述】:

我在我的 repo 中有一个与 head 分离的分支,我在其中添加了同名的文件夹,其中包含不同的文件。每次当我想提交某些内容时,我都会手动删除存储库中的文件夹并添加具有相同名称但内容不同的新文件夹,然后我将其提交并推送。问题是,当我签出我过去的一个提交时,我看到了该文件夹,它包含来自所选提交和过去提交的内容,但我只想查看来自该具体提交的内容。所以,我想问是否有可能这样做,我应该如何做到这一点?也许我应该使用某种 git 命令从我的仓库中删除文件? (但如果它是真的,我想确保上次提交的文件不会丢失)。

【问题讨论】:

    标签: git content-management-system git-commit git-checkout


    【解决方案1】:

    每次提交之前,您还应该从跟踪文件中删除 git 跟踪的目录中的所有文件,执行git rm your_directory

    如果你不这样做,git 会记住你在上一次提交中有其他文件,并且只会添加差异,而不删除那些文件新提交中不存在。

    所以你需要告诉 git 你正在删除文件,并在新目录的副本之后再次使用 git add your_directory 添加新文件。

    这样 git 会:

    • 了解它必须删除旧文件/目录
    • 添加新文件/目录

    您只需要在“文件系统级别”上手动执行相同的操作,并在“git级别”上执行此操作。

    让我知道这是否是您想要做的! 如果这行得通!

    【讨论】:

      【解决方案2】:

      您似乎希望在不公开其完整历史记录的情况下查看提交。我认为最好的方法是使用孤儿分支。

      你会 -

      git --orphan <new_branch>
      

      这会将您切换到一个干净的新分支,然后您可以签出到您想要的提交,该提交将成为父提交,没有附加任何历史记录。

      【讨论】:

      • 这样他不会为他想要的每个提交获得一个新分支吗?或者这样 OP 的目录副本 的所有提交仍将驻留在同一个分支中?
      猜你喜欢
      • 1970-01-01
      • 2013-12-20
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 2021-03-26
      • 2012-01-01
      • 2019-06-18
      相关资源
      最近更新 更多