Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git签出问题_Git_Svn - Fatal编程技术网

Git签出问题

Git签出问题,git,svn,Git,Svn,我想用git执行类似于svn更新操作的操作。我有一个远程存储库,它源于主存储库上的fork操作。我克隆了这个远程存储库,现在有了一个本地存储库 我开始在这个本地存储库中工作,修改了一些文件,添加了一些文件,删除了一些文件。在这一点上,我没有做出任何承诺。我想提出一个通用命令,它允许我将本地存储库的状态恢复为远程分叉存储库中的状态,但不删除我添加的文件。更具体地说,类似于svn更新的操作应: 将所有修改过的文件还原为它们在远程存储库中的状态 在远程存储库中添加在本地存储库中删除的所有文件 保留新添

我想用git执行类似于svn更新操作的操作。我有一个远程存储库,它源于主存储库上的fork操作。我克隆了这个远程存储库,现在有了一个本地存储库

我开始在这个本地存储库中工作,修改了一些文件,添加了一些文件,删除了一些文件。在这一点上,我没有做出任何承诺。我想提出一个通用命令,它允许我将本地存储库的状态恢复为远程分叉存储库中的状态,但不删除我添加的文件。更具体地说,类似于svn更新的操作应:

将所有修改过的文件还原为它们在远程存储库中的状态 在远程存储库中添加在本地存储库中删除的所有文件 保留新添加的文件。 我认为这属于git签出的范围。当我运行git checkout时,它显示文件被添加、删除或修改,但是当我再次运行git状态时,我得到的结果与运行git checkout之前相同。在浏览我的本地回购协议时,我发现删除的文件不会再次添加


我使用git签出错误吗?为什么我的本地回购不能恢复到以前的状态?

如果您还没有提交新文件,那么这些文件将不被跟踪。重置时不会删除未跟踪的文件。您可以使用以下方法重置:

git reset master --hard
请注意,硬重置可能有点可怕,请确保您没有想要保留的跟踪更改

另见:

您指的是像github的fork这样的fork吗Git本身没有实现名为fork的功能。为什么不能在更新中使用Git pull origin命令。Git签出就像切换分支而不是svn更新。如果您跟踪了自己关心的更改,那就很可怕了。现在我对git仍然毫无用处,所以我不会进行任何提交/转移。所以实际上git重置master-hard正是我需要的…实际上master代表什么?是我的分叉存储库还是主存储库?@user32882:master是一个分支名称。你的分支机构名称由你自己决定。你需要知道的是。。。好的,有很多:-但是您可以从这个概念开始:提交有一个唯一的散列ID,跨越每个存储库。如果你有那个散列ID,你就有那个提交。如果Bob有哈希ID,他也有提交。每个有这个ID的人都有这个承诺。没有其他提交具有相同的ID,无论谁在何处提交,每个人都同意散列ID。同时,像master这样的分支名称是您的,它所做的是为您记住一个散列ID@user32882:散列ID很大,很难看,人类无法处理,这就是为什么我们使用名称:像master这样的分支名称或像v2.1这样的标记名称。他们为我们记住了散列ID。分支名称的问题是,当您git克隆其他人的存储库时,您的git会更改他们的分支名称,这样它们就不会与您的名称冲突。例如,Bob的master就是您的Bob/master。@user32882:git reset做三件事:1更改存储在一个分支名称中的散列ID。2重置Git调用的索引,即进入下一次提交的文件集。3重置Git所称的工作树,这是您可以查看和处理文件的唯一位置。