相关疑难解决方法(0)

如何丢弃Git中的未分级更改?

如何放弃工作副本中不在索引中的更改?

git version-control

4562
推荐指数
38
解决办法
242万
查看次数

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

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

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

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

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

git file-io git-checkout

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

如何从另一个分支中获取一个文件

我正在使用git并在master分支上工作.这个分支有一个名为的文件app.js.

我有一个experiment分支,我做了一堆变更和大量的提交.现在我希望把做只对所有变化app.jsexperimentmaster分支.

我怎么做?

再一次,我不想合并.我只是想把所有的变化app.jsexperiment分支带到master分支.

git git-checkout

1154
推荐指数
10
解决办法
51万
查看次数

如何从Git中的特定修订中检索单个文件

我有一个Git存储库,我想看看几个月前一些文件的样子.我在那个日期找到了修改版,而且它是27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8.我需要查看一个文件的外观,并将其保存到文件中.

我设法看到文件使用gitk,但它没有保存选项.我尝试使用命令行工具,我得到的最接近的是:

git-show 27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8 my_file.txt
Run Code Online (Sandbox Code Playgroud)

但是,此命令显示diff而不是文件内容.我知道我以后可以使用类似的东西PAGER=cat并将输出重定向到文件,但我不知道如何获得实际的文件内容.

基本上,我正在寻找类似svn cat的东西.

git single-file

789
推荐指数
9
解决办法
35万
查看次数

"git reset"和"git checkout"有什么区别?

我一直在想,git reset并且git checkout同样地,在这个意义上,两者都将项目带回特定的提交.但是,我觉得它们不可能完全相同,因为这将是多余的.这两者之间的实际差异是什么?我有点困惑,因为svn只svn co需要恢复提交.

添加

下面的图解释了差别,尽管在一个或者可能过于简化的或不正确的方式进行.你怎么看?是错误还是过度简化?

http://a.imageshack.us/img192/5440/screenshot20100903at416.png

增加2

VonC和Charles解释了两者之间的差异,git reset并且git checkout非常好.我目前的理解是git reset将所有更改还原为特定提交,而git checkout更多或更少的准备分支.我发现以下两个图对于理解这些图非常有用:

http://a.imageshack.us/img651/1559/86421927.png http://a.imageshack.us/img801/1986/resetr.png

增加3

http://think-like-a-git.net/sections/rebase-from-the-ground-up/using-git-cherry-pick-to-simulate-git-rebase.html,checkout和reset可以模拟反叛.

在此输入图像描述

git checkout bar 
git reset --hard newbar 
git branch -d newbar 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

git git-checkout git-reset

415
推荐指数
5
解决办法
11万
查看次数

Git:如何从远程源主服务器更新/签出单个文件?

场景:

  1. 我在本地对一个文件进行了一些更改并运行git add,git commit并且git push
  2. 该文件被推送到远程源主存储库
  3. 我有另一个本地存储库,通过Capistrano与该远程存储库中的"remote_cache"方法一起部署
  4. 现在我不想部署整个应用程序,只需更新/签出该单个文件.

拜托,这对git来说有点可能吗?我无法找到任何有用的东西,也无法找到它.有了SVN我就做了svn up file,瞧.

我会很高兴得到任何帮助,谢谢!

git git-checkout

318
推荐指数
7
解决办法
42万
查看次数

以下未跟踪的工作树文件将被合并覆盖,但我不在乎

在我的分支上,我在.gitignore中有一些文件

在不同的分支上,这些文件不是.

我想将不同的分支合并到我的,我不在乎这些文件是否不再被忽略.

不幸的是我明白了:

合并将覆盖以下未跟踪的工作树文件

如何修改我的pull命令来覆盖这些文件,而不必自己查找,移动或删除这些文件?

git merge git-merge git-fetch

254
推荐指数
16
解决办法
42万
查看次数

如何git reset --hard一个子目录?

更新:从Git 1.8.3开始,这将更直观地工作,请参阅我自己的答案.

想象一下以下用例:我想摆脱我的Git工作树的特定子目录中的所有更改,保留所有其他子目录.

什么是适合此操作的Git命令?

下面的脚本说明了这个问题.在How to make files注释下面插入适当的命令- 当前命令将恢复a/c/ac应该由稀疏检出排除的文件.请注意,我希望明确恢复a/aa/b,我只"知道" a,并希望下面恢复一切.编辑:我也不"知道" b,或者与其他目录位于同一级别a.

#!/bin/sh

rm -rf repo; git init repo; cd repo
for f in a b; do …
Run Code Online (Sandbox Code Playgroud)

git reset sparse-checkout git-reset

178
推荐指数
7
解决办法
12万
查看次数

什么是“git restore”命令,“git restore”和“git reset”有什么区别?

当我想取消暂存文件时,我所有的 Git 教程都显示如下内容:

$ git add *
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    README.md -> README
    modified:   CONTRIBUTING.md
Run Code Online (Sandbox Code Playgroud)

此提示告诉我们git reset用于取消暂存文件。

但是,在我的终端中,我看到:

git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    renamed:    cat.js -> catcat.js
    renamed:    tolendo.gogo -> tolendo.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    readme (copy).md
    tolendo (copy).txt
    zing (copy).html
Run Code Online (Sandbox Code Playgroud)

我的终端告诉我使用,git …

git restore git-reset unstage

107
推荐指数
4
解决办法
8万
查看次数

Git stash pop-需要合并,无法刷新索引

我无法弹出我的藏匿处,因为我合并了一个显然与我的藏品冲突的分支,现在我的藏匿处似乎无法弹出.

app.coffee: needs merge
unable to refresh index
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

固定!

事实证明,实际问题是来自合并的未解决的合并冲突,而不是存储会导致合并冲突.

解决方案:提交冲突的文件.

git git-stash

97
推荐指数
6
解决办法
12万
查看次数