git - 在 Git 中仅 pull 未更改的文件

标签 git

<分区>

我如何才能只从远程存储库中 pull 未更改的文件,并保持本地更改不变,而不进行任何 merge ?

有人建议这个顺序:

git stash
git pull
git stash pop

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

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

最佳答案

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

在提交时进行大量小 merge 通常比一次大 merge 更容易,这就是为什么 git 的工作流程是这样的。

在 git 中可以(如果不是一个好主意)做你要求的事情;基本上,您试图推迟对已更改文件的所有 merge ,直到您准备好提交到原始文件。为了让 git 正确跟踪这一点,您需要有一个与您 pull 入的分支分开的本地分支。

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 merge 到 master 并从那里推送。

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

关于git - 在 Git 中仅 pull 未更改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23806188/

相关文章:

git - 如何将子node_modules添加到.gitignore?

git - 如何查看所有子模块和子子模块?

git - (git tfs fetch) TF400324 : Team Foundation services are not available, 底层连接被关闭

git - pull 请求插件将 master merge 到 branch

git - 查找 Git 存储库的名称

git - 如何设置自定义子域映射到 aws codecommit?

git - 如何删除没有指定分支的git中的提交?

git - 如何将 gdoc 的修订历史导出到 git?

git - 存储库是 .git 文件夹还是带有 .git 文件夹的目录?

git - Jenkinsfile 检查构建是否由推送或 merge 请求触发