Git在不影响本地文件更改的情况下提取内容,反之亦然



我正试图将文件"README"从github存储库提取到我的ubuntu本地。

Github存储库中文件"README"的内容类似于:

This is a git repo modified from github

现在,对于同一个文件,我在本地进行了更改,比如:

This is a git repo locally modified from github local

现在在我的中

Ubuntu终端,需要知道如何在不影响本地内容的情况下从Github获取文件内容,反之亦然

场景1:如果我在本地更改README文件并说"git status",我会得到

modified:   README

在我的终端。

在这里,我需要在不影响内容的情况下将本地内容添加到github。

场景2:对github进行的任何更新,我都需要在不影响本地内容的情况下获得更新。

场景3:如何恢复在本地中所做的更改,并将github中的更改推送到其原始状态。

需要所有场景中的命令。

更新:

尝试了以下操作:

git stash
git pull origin master
git stash pop

我得到的是:

<<<<<<< Updated upstream
This is a git repo modified from github repo
=======
This is a git repo locally modified from github
>>>>>>> Stashed changes

如何从github获得更新并保留我们的本地更改,而无需手动编辑它们

场景1:您想在不更改服务器状态的情况下将本地内容添加到服务器???git branch可以解决您的问题。或者哪些内容不应该受到影响?git分支机构文档

场景2:git fetch从服务器下载更改,但不将其应用于本地。git pull将应用它们。git提取文档

场景3:如果您恢复本地更改,则由于您已经处于干净状态,因此没有什么可推的了?

场景1:学习Git,然后提交您的更改,然后推送您的更改。

场景2:您知道Git是分布式VCS吗?您在本地进行更改,提交更改,进行更多更改,提交它们,可能在本地处理多个分支,等等。当您想集成上游更改时,您git fetch这些更改会将它们下拉到远程跟踪分支中,而不会影响本地分支。然后git mergegit rebase将更改从远程跟踪分支转移到本地分支,具体取决于情况("基本"创建一个线性历史记录,您的提交位于来自远程的更改之上,但在重写历史记录时不应对已推送的更改执行此操作,"合并"创建合并提交以合并您的更改和远程更改)。如果您在本地修改了一个文件,并且有来自远程的更改,因此合并或重新建立基础并发生冲突,Git告诉您这样做,并希望您手动或使用合并工具(git mergetool)解决冲突。fetch+mergefetch+rebase也可以用一个命令来完成,即git pull,根据您的配置选项和命令行参数,它可以进行合并或重定基准。如果您不想在将更改与本地更改结合在一起之前查看远程更改,那么这很方便。

如果您不想首先提交修改,可以使用git stash保存并还原本地未提交的更改,然后将远程更改合并或重定为本地分支的基础,然后使用git stash pop再次应用更改。如果存在冲突,git stash pop的工作方式与git stash apply类似。然后,您可以解决冲突,如果您满意,可以使用git stash drop丢弃最上面的存储。

在合并或重定基础时,您还可以使用完全使用文件的合并策略,忽略来自远程的内容(不仅仅是冲突文件)。如果只想使用冲突文件的版本,请使用git checkout --ours -- your-file.ext手动解决该文件的冲突。

场景3:如果您没有在本地提交或添加到索引,只需在回购的根目录中执行git checkout .即可恢复所有本地更改。如果您已经进行了提交,则可以使用git branch -f master origin/mastergit reset --hard origin/master将本地主分支置于远程分支状态,放弃所有本地提交。

最新更新