相关疑难解决方法(0)

在Git存储库中查找并恢复已删除的文件

说我在Git存储库中.我删除了一个文件并提交了更改.我继续工作,并做了一些更多的提交.然后,我发现我需要恢复该文件.

我知道我可以使用签出文件git checkout HEAD^ foo.bar,但我真的不知道该文件何时被删除.

  1. 找到删除给定文件名的提交的最快方法是什么?
  2. 将该文件恢复到我的工作副本的最简单方法是什么?

我希望我不必手动浏览我的日志,检查整个项目的给定SHA,然后手动将该文件复制到我原来的项目结帐中.

git file-io git-checkout

2716
推荐指数
20
解决办法
93万
查看次数

查找在Git中删除文件的时间

我有一个带有n次提交的Git存储库.

我有一个我需要的文件,以前曾经在存储库中,我突然寻找并想"哦!那个文件去哪了?"

是否有(系列)Git命令会告诉我"在提交n-13时删除了文件really_needed.txt"?

换句话说,如果不查看每个单独的提交,并且知道我的Git repo对每个文件进行了每次更改,我是否可以快速找到该文件的最后一次提交,以便我可以将其恢复?

git

932
推荐指数
8
解决办法
22万
查看次数

如何在git存储库中列出所有已删除的文件?

我知道git存储文件何时被删除的信息,我能够检查各个提交以查看哪些文件已被删除但是是否有一个命令可以在存储库的生命周期内生成每个已删除文件的列表?

git

281
推荐指数
7
解决办法
10万
查看次数

查看移动文件的GIT历史记录

尽管阅读了很多关于GIT和移动文件的帖子,但我仍然很难理解如何追踪完整的历史记录.这样gitk myfile的建议在这里似乎只能说明历史,直到前一个举动.据我所知,GIT不会跟踪文件,只跟踪文件的内容.所以我肯定能够查看文件的完整演变,即使它被移动了吗?

任何人都可以指导我一个简单的好例子/教程吗?

我想看一个示例,其中一些文件被移动,更改和提交,然后显示单个文件的历史记录,移动和所有.我一直在看'日志',但这似乎与checkins有关.仍然会欣赏一些建议,即使它说我仍然在想太多的SVN.

git

72
推荐指数
1
解决办法
2万
查看次数

如何在git中列出目录树的更改历史记录

Git不会跟踪目录.它只跟踪某些目录中的文件.(请参阅如何将空目录添加到Git存储库?)

但是,如果我有一定的提交历史,我隐含地也有目录树的更改历史记录.

那么我该如何回答以下问题:

  1. 何时创建了目录foo/bar(在git术语中:何时是该目录中创建的第一个文件).如果在历史记录中删除了foo/bar并稍后重新创建,则可能会有多个限定提交.
  2. 何时删除了目录foo/bar(在git术语中:何时从该目录中删除了最后一个文件).如上所述,可能会有多个符合条件的提交.
  3. foo/bar的子目录在历史的任何时间点都存在

我能想出的最接近的是伪代码:

loop over all commits (git rev-list --all)
  start from repo root directory
  do recursively on the directory tree rebuilt so far
    call git ls-tree and grep the tree lines
    rebuild next level of directory tree
  end
end
Run Code Online (Sandbox Code Playgroud)

显然,这可以用您最喜欢的脚本语言编写.

然后我有所有目录树,我仍然需要以聪明的方式搜索它们,以便回答类型1 - 3的问题.再次,可行,但可能不会在几分钟内.

问题是:

  1. 有没有更简单的方法?
  2. 如果没有:是否适合网上已有的脚本?(我的谷歌搜索没有透露任何,但我也没有提出完美的搜索词)

git

15
推荐指数
2
解决办法
1万
查看次数

`git filter-repo` 命令在 Windows 上不输出任何内容

git-filter-repo通过安装scoop,尝试了多个git filter-repo命令,例如git filter-repo -h,它们都没有记录任何内容,没有警告或错误,只是没有记录

尝试重新启动、重新安装并在另一台 Windows 10 计算机上安装它,全部重现。

git-filter-repo: v2.33.0
git: v2.33.0.windows.2
python: v3.9.7
scoop:

Current Scoop version:
09200504 (HEAD -> master, origin/master, origin/HEAD) reset: skip when app instance is running (#4359)

'main' bucket:
b71f4a842 (HEAD -> master, origin/master, origin/HEAD) nunit-extension-vs-project-loader: Update to version 3.9.0
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

python windows git scoop-installer git-filter-repo

13
推荐指数
2
解决办法
1万
查看次数

我可以在git中合并文件吗?

我有三个文件Shell-ijk-ArrayList.java,Shell-ijk-Vektor.javaShell-ikj-ArrayList.java在这个混帐存储库.我已经手动"合并"了它们MatrixMultiplication.java.现在我想摆脱其他三个,但我想保留它们的历史.做这个的最好方式是什么?

我找到了git merge-file,但是当我尝试的时候

git merge-file MatrixMultiplication.java Shell-ijk-ArrayList.java Shell-ijk-Vektor.java 
Run Code Online (Sandbox Code Playgroud)

我明白了

error: Could not stat MatrixMultiplication.java
Run Code Online (Sandbox Code Playgroud)

我可以简单地删除旧文件git rm,但后来我将失去历史,不是吗?

我也可以移动它git mv,但对于过时的文件,什么是一个很好的文件夹?

git github

6
推荐指数
1
解决办法
2782
查看次数

不同git搜索命令之间的区别

初学者的一个问题:git历史记录有多种搜索方式。对我来说,不清楚命令之间的区别到底是什么:

  1. git log,例如git log -S 'for what you search' --all在所有分支中搜索字符串并 git log -G 'search for regexpr' --all搜索 regexpr。例如参见这里
  2. git log --grep 'pattern'
  3. git rev-list,例如git rev-list --grep='string' --all
  4. git grep,例如git grep "string or regexpr" $(git rev-list --all)这里
  5. gitk,例如gitk file.txtGUI 界面
  6. git log --all --full-history -- **/thefile.*从这里搜索历史记录中的文件名。
  7. git diff --word-diff-regex=. > changes.txt结合grep -oP '\+[^\+]+\+' changes.txt | tr -d '\+'显示基于字符的变化。从这里。如果尚未提交更改,这甚至可以工作。

我的理解很差

  • git …

git

5
推荐指数
1
解决办法
641
查看次数

在 GIT 历史记录中搜索文件?

所以我的一个项目中有一个文件被删除了,没有人知道何时或为什么,它就这样消失了。(可能几个月)。问题是我只知道名字的一部分,不知道全名。我如何搜索在提交(不是提交消息)中添加/删除的文件?

该文件应该看起来像something_something.*.xml,有什么想法吗?[*可以是一个字符串,也可以是由下划线、破折号或点分隔的多个字符串]

git git-history

5
推荐指数
1
解决办法
1747
查看次数

git rebase 并不包含所有文件

我错误地在我的分支中使用了“git rm my_file”。

经过一些提交、合并......现在我试图从 master 分支取回文件,我正在使用“git rebase master”,它说当前分支是最新的,但文件不存在。

有没有办法将文件从 master 获取到我的分支?我认为只需创建一个新分支即可解决问题。

git git-rebase git-branch

0
推荐指数
1
解决办法
771
查看次数