Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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_Version Control - Fatal编程技术网

使用git中的文件更改版本有什么更好的方法吗?

使用git中的文件更改版本有什么更好的方法吗?,git,version-control,Git,Version Control,我必须与5GB回购协议合作。大多数情况下,我不必对单个文件进行更改,但我会运行一个脚本来更改、添加和删除许多文件 现在,这些外部脚本可能会导致一些破坏性的更改 如果脚本不能按预期工作,在Git中是否有办法恢复到运行脚本之前的状态 我尝试了git-tag和git-branch,但不知何故,当我签出tag或切换回master分支时,更改的文件将获得其原始状态,但添加的文件也保留在那里,而不是消失 我做错了什么 当一个脚本更改了这么多文件而结果不起作用时,我如何管理这种情况?我可以轻松地恢复到运行脚本

我必须与5GB回购协议合作。大多数情况下,我不必对单个文件进行更改,但我会运行一个脚本来更改、添加和删除许多文件

现在,这些外部脚本可能会导致一些破坏性的更改

如果脚本不能按预期工作,在
Git
中是否有办法恢复到运行脚本之前的状态

我尝试了
git-tag
git-branch
,但不知何故,当我签出
tag
或切换回
master
分支时,更改的文件将获得其原始状态,但添加的文件也保留在那里,而不是消失

我做错了什么

当一个脚本更改了这么多文件而结果不起作用时,我如何管理这种情况?我可以轻松地恢复到运行脚本之前的状态吗


这就是我正在做的。也许我做错了什么

mkdir git-learning
touch basic-file1 basic-file2 basic-file3
git init
git add .
git commit -m "At the start: first version"
在此之后,
git状态
显示工作目录是干净的

touch new-file1 new-file2 new-file3
git add .
git commit -m "second version: possibly wrong changes"
git reset --hard
git clean -f
现在
git status
没有显示要提交的内容,工作目录是干净的

但当我运行
ls
命令时,它仍然显示所有文件,包括
new-file1
new-file2
new-file3
。但是我需要一些命令来显示
basic-file1
basic-file2
basic-file3
,并清除所有其他新文件


如何执行此操作?

当您要恢复所有更改时,可以使用
git reset
git clean
命令重置和清理工作树。以下命令将强制清除并将工作树重置为完全清除状态:

git reset --hard <rev>
git clean -f
git重置——硬
吉特清洁-f

小心使用git clean-f,因为它将删除所有未被git跟踪的文件。确保这是您真正想要做的,并在继续之前进行适当的备份。

当您想要恢复所有更改时,可以使用
git reset
git clean
命令重置和清理工作树。以下命令将强制清除并将工作树重置为完全清除状态:

git reset --hard <rev>
git clean -f
git重置——硬
吉特清洁-f

小心使用git clean-f,因为它将删除所有未被git跟踪的文件。确保这是您真正想要做的,并在继续之前进行适当的备份。

因为我们不知道您的脚本,我们不得不推测。。。所以答案是:是的,有一些命令可以修复你的状态。不,没有人知道这是什么。他们有时是不同的。如果单个脚本运行正常,则不会再次运行该脚本。git适合这种情况吗?还是我应该使用好的旧拷贝粘贴备份系统?因为我们不知道您的脚本,所以我们不得不推测。。。所以答案是:是的,有一些命令可以修复你的状态。不,没有人知道这是什么。他们有时是不同的。如果单个脚本运行正常,则不会再次运行该脚本。git是否适合这种情况,还是应该使用好的旧拷贝粘贴备份系统?请小心使用
git clean
。这会删除不受版本控制的文件。这是正确的,但我相信这正是OP想要的。“…但是添加的文件也保留在那里,而不是消失”我将在我的回答中添加一个警告。是的。基本上,我的需要是在特定时间(比如在运行一些脚本之前)恢复到文件夹结构的
精确快照
,并在该时间使用精确的文件夹结构。。。或多或少不是一个文件。所以我的答案应该对你有用。如果有,请接受它作为正确答案:-)我只是在尝试。也许我做错了什么。但这就是我所做的
mkdir git learning
touch basic-file1 basic-file2 basic-file3
git init
git add.
git commit-m“在开始处:第一个版本”
git status
:显示工作目录是干净的。--
触摸new-file1 new-file2 new-file3
git add.
git commit-m“第二个版本:可能错误的更改”
然后触摸
git clean-f
git status
:未显示任何要提交的内容,工作目录是干净的。但当我运行
ls
命令时,它仍然显示所有的l文件,包括new-file1、2和3。小心使用
git-clean
。这会删除不受版本控制的文件。这是正确的,但我相信这正是OP想要的。“…但是添加的文件也保留在那里,而不是消失”我将在我的回答中添加一个警告。是的。基本上,我的需要是在特定时间(比如在运行一些脚本之前)恢复到文件夹结构的
精确快照
,并在该时间使用精确的文件夹结构。。。或多或少不是一个文件。所以我的答案应该对你有用。如果有,请接受它作为正确答案:-)我只是在尝试。也许我做错了什么。但这就是我所做的
mkdir git learning
touch basic-file1 basic-file2 basic-file3
git init
git add.
git commit-m“在开始处:第一个版本”
git status
:显示工作目录是干净的。--
触摸new-file1 new-file2 new-file3
git add.
git commit-m“第二个版本:可能错误的更改”
然后触摸
git clean-f
git status
:未显示任何要提交的内容,工作目录是干净的。但当我运行
ls
命令时,它仍然显示所有的l文件,包括new-file1、2和3。