【问题标题】:Pull only unchanged files in Git [duplicate]仅在 Git 中提取未更改的文件 [重复]
【发布时间】:2014-07-11 10:52:47
【问题描述】:

如何仅从远程存储库中提取未更改的文件,并保持本地更改不变,而不进行任何合并?

有人建议这个顺序:

git stash
git pull
git stash pop

但是,有一个明显的缺点:最后一个命令可能会发生冲突,我需要做一些事情来解决它们(例如,如果我有大量冲突的文件,这会很麻烦)。

在 TFS 中,我只是简单地“获取最新版本”,没有大惊小怪。这里有类似的吗?

【问题讨论】:

  • 这个问题有一些特殊的条件,可以防止它与建议的问题重复。
  • @antlersoft 问题git pull keeping local changes 是一个合适的副本。

标签: git


【解决方案1】:

TFS get latest version 如果它们与您更改的文件冲突,也会强制您进行合并,所以它与 git pull 真的没有什么不同。

在提交时进行大量小合并通常比一次大合并更容易,这就是 git 的工作流程是这样的原因。

可以(如果不是一个好主意)按照您在 git 中的要求进行操作;基本上,您正在尝试推迟对已更改文件的所有合并,直到您准备好提交到原始文件。为了让 git 正确跟踪这一点,您需要有一个与您拉入的分支分开的本地分支。

git checkout -b mywork # Create local branch
# ... hack away ...

# When you want to get changes from origin.  Note
# that you can script this part to do it as one step.
git commit          # Commit my changes to local branch
git checkout master # Go back to branch tracking origin
git pull            # Retrieve changes from origin
git checkout mywork

# Here's the tricky part; merge from master, taking your
# code wherever there's a conflict, and *not* recording as
# a merge; if recorded as a merge, you'll overwrite changes
# in master when you merge back
git merge --squash --strategy-option=ours master

# ... hack away ...

当你准备好推送时,你将 mywork 合并到 master 并从那里推送。

再次注意,当您将 mywork 合并到 master 时,您在为一个大合并拉取更改时,您正在交易许多较小的合并,而这通常不是最好的。

【讨论】:

    【解决方案2】:

    您始终可以只fetch 更改而不是pulling 他们。

    当你 fetch git 将更改从服务器拉到远程分支上时,例如当你 fetch master 它会更新 origin/master。因此,您可以在不影响本地 master 分支的情况下查看新更改。

    注意当您使用 pull 时,git 实际所做的是将更改 fetch 然后 merge 放入您的分支中。

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-15
      • 2018-12-30
      • 2017-04-20
      相关资源
      最近更新 更多