相关疑难解决方法(0)

如何恢复Git中丢失的存储?

我经常使用git stashgit stash pop保存和恢复工作树中的更改.昨天我的工作树上有一些变化,我已经藏起来了,然后我对工作树做了更多改动.我想回去查看昨天发生的变化,但git stash pop似乎删除了对相关提交的所有引用.

我知道如果我使用git stash那么.git/refs/stash包含用于创建存储的提交的引用.而.git/logs/refs/stash包含整个存储.但那些参考文献已经消失了git stash pop.我知道提交仍然在我的存储库中,但我不知道它是什么.

有没有一种简单的方法来恢复昨天的隐藏提交引用?

请注意,这对我来说并不重要,因为我有每日备份,可以回到昨天的工作树来获取我的更改.我问,因为必须有一个更简单的方法!

git recovery git-stash

1617
推荐指数
22
解决办法
28万
查看次数

是否可以在Git中移动/重命名文件并保留其历史记录?

我想在Git中重命名/移动项目子树

/project/xyz
Run Code Online (Sandbox Code Playgroud)

/components/xyz
Run Code Online (Sandbox Code Playgroud)

如果我使用普通的git mv project components,那么所有的提交历史xyz project都会丢失.有没有办法移动这个以保持历史?

git rename mv

630
推荐指数
11
解决办法
32万
查看次数

`git add .`和`git add -u`有什么区别?

我假设两者都以同样的方式工作.两者都将每个文件添加到索引.但我似乎错了.

  • git add .和之间有什么区别git add -u

git git-add

69
推荐指数
3
解决办法
3万
查看次数

使用Git的常见反模式是什么?

作为一个Git新手,我意识到我一直在使用它,好像它是Subversion.例如,总是在master上工作,而不是在拉动更改之前在本地提交.这通常会导致可避免的手动合并情况.使用Git的其他常见反模式有哪些?

git version-control anti-patterns

25
推荐指数
5
解决办法
2139
查看次数

从忘记恢复.gitignore

git newbies似乎是一个常见的问题.

我忘了.gitignore一个特定的文件,并在提交之后将它添加到.gitignore没有任何区别.

在gitready上找到了这个页面,它解释了如何从存储库中删除文件而不将其从工作树中删除(通过使用命令git rm --cached <file>,该工作正常,但如果我然后尝试将其合并回另一个分支,则文件在工作树被删除.

在空文件夹上重现的步骤:

git init
touch want.txt
touch wantnot.txt
git add .
git commit -m "Initial"
git checkout -b BranchForIgnore
git rm --cached wantnot.txt
cat > .gitignore
wantnot.txt  [Ctrl-D Ctrl-D here to exit cat]
git add .
git commit -m "Ignoring file"
Run Code Online (Sandbox Code Playgroud)

到此为止,一切都很好

git checkout master
git merge BranchForIgnore
Run Code Online (Sandbox Code Playgroud)

此时,我的wantnot.txt文件不再是我的主人,显然,检查BranchForIgnore也无济于事.

该怎么办?

git

9
推荐指数
2
解决办法
4011
查看次数