我正试图将文件"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 merge
或git rebase
将更改从远程跟踪分支转移到本地分支,具体取决于情况("基本"创建一个线性历史记录,您的提交位于来自远程的更改之上,但在重写历史记录时不应对已推送的更改执行此操作,"合并"创建合并提交以合并您的更改和远程更改)。如果您在本地修改了一个文件,并且有来自远程的更改,因此合并或重新建立基础并发生冲突,Git告诉您这样做,并希望您手动或使用合并工具(git mergetool
)解决冲突。fetch+merge
或fetch+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/master
或git reset --hard origin/master
将本地主分支置于远程分支状态,放弃所有本地提交。