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