标签: git-show

当我使用git将单个文件签出到其他位置时,如何保留行结尾?

我想将git存储库中的单个文件签出到不同的位置(除了工作目录)并保留当前正在工作的目录.我希望git以正确的行结尾检查我的文件.

我在Windows上工作,但我在Linux中也有同样的问题.

这是我的场景(Win7 64位):

首先,我确保git在提交时将CRLF转换为LF,在结帐时将LF转换为CRLF:

git config --local core.autocrlf true
Run Code Online (Sandbox Code Playgroud)

然后我创建一个名为crlf.txt的文件,其中包含CRLF行结尾并提交它:

git add crlf.txt
git commit -m "File with crlf"
Run Code Online (Sandbox Code Playgroud)

我在crlf.txt中更改了一些内容并提交它:

git add crlf.txt
git commit -m "Change in crlf.txt"
Run Code Online (Sandbox Code Playgroud)

现在我想得到像第一次提交时的crlf.txt:

git show HEAD~1:crlf.txt > "/home/user/crlf_like_in_head-1.txt"
Run Code Online (Sandbox Code Playgroud)

文件"crlf_like_in_head-1.txt"不包含CRLF而是LF.我认为git show是正确的,因为它显示了文件内容,就像它在存储库中一样(core.autocrlf = true将CRLF转换为LF).我知道从文档中我尝试使用core.autocrlf = false.使用core.autocrlf = false"crlf_like_in_head-1.txt"包含CRLF.我知道我可以轻松地将LF转换为CRLF,但我必须确保结果文件与使用git检出的结果文件相同.

我知道我也可以使用git checkout签出一个文件:

git checkout HEAD~1 crlf.txt
Run Code Online (Sandbox Code Playgroud)

但它覆盖了工作目录中crlf.txt的当前内容(如果crlf.txt处于脏状态),我也无法通过git checkout将其签出到另一个文件夹.

git git-checkout core.autocrlf git-show

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

为什么 git show filename 显示差异?

git show filename显示差异,同时 git show branch:path/to/filename显示文件的内容。

我查看了帮助(git show --help),我的理解是它应该默认为 HEAD,即git show HEAD:filename.

但这会产生我预期的文件内容。有人有任何见解吗?

git git-show

5
推荐指数
2
解决办法
249
查看次数

如何读取 git show 命令输出

我刚开始接触 VC,尤其是 git。我知道基本命令,git add/commit/remote但很难理解输出:

$ git show f27d852

commit f27d852fc750a9c3f71eaf0acf586164b76faddf
Author: myusername <myemail@gmail.com>
Date:   Tue Jun 28 22:59:35 2016 +0530

    changed color to a different color

diff --git a/css/business-casual.css b/css/business-casual.css
index bbd44d7..ee1765e 100644
--- a/css/business-casual.css
+++ b/css/business-casual.css
@@ -194,5 +194,5 @@ footer p {
 /* CUSTOM CSS - BY ME */

 .brand {
-       color: #ff0000;
-       }
\ No newline at end of file
+       color: #ffdd000;
+       }
Run Code Online (Sandbox Code Playgroud)

每行是什么意思?如何阅读它。谁能解释一下?

谢谢dk

git git-show

4
推荐指数
1
解决办法
1098
查看次数

diff 和 show 的不同 git pager 选项

我喜欢我的标签显示为 4 个空格,为此我有首选项core.pager = 'less -x4'.

我知道此时我在吹毛求疵,但即使在差异模式下,我也希望前导标签为 4 个空格,这显然是最常用的 - 但是由于前导+, -,它仅显示为 3或。由于对齐的行,这有点烦人,如果有些没有前导选项卡,与其他人相比,它们会移动 1 列。

我可以更正差异的显示,less -x1,5以获得 4 个空格的选项卡,在列 1 模 4 上对齐。但是,此选项会导致前导选项卡在非差异模式下显示为 1 列,这反过来又非常令人不安。

因此,对于两个具体示例,我如何设置 git 选项以便我使用:

  • less -x1,5对于差异(或真正的补丁显示)命令,例如git diffgit show HEAD
  • less -x4 对于不显示差异的命令,例如 git show HEAD~1:package.json

我确信必须有一个不同的渲染器来处理基本diffcat操作,但我无法找到这些特定的选项(尽管它们可能存在,但关于 git 主题有很多噪音)。我也不想写一大堆别名,这有点太脏了。那么这甚至可能吗?

git git-diff git-config git-show

4
推荐指数
1
解决办法
763
查看次数

Git show:显示文本选择的修订版中的斑点

我知道您可以使用gitrevisions(1) 中记录的:/<text>-syntax选择修订版,例如

git show :/"new change"
Run Code Online (Sandbox Code Playgroud)

将在提交消息中显示带有“新更改”的(最年轻的可到达的)提交。

我也经常在特定版本中使用该功能来处理git showblob,例如

git show myBranch:./coolFile.csv
Run Code Online (Sandbox Code Playgroud)

在修订状态下查看coolFile.csv(以我的相对路径)的全部内容。 myBranch

现在我的问题是:我可以使用:/<text>语法选择一个修订版,然后在该修订版中显示一个斑点吗?我努力了

git show (:/"new change"):./coolFile.csv
git show :/"new change":./coolFile.csv
Run Code Online (Sandbox Code Playgroud)

这引发了错误

致命:不明确的参数':/新更改:./coolFile.csv':未知修订版或路径不在工作树中。
使用“--”将路径与修订版分开,如下所示:
“git [<revision>...] -- [<file>...]”

所以我尝试了

git show :/"new change" -- ./coolFile.csv
Run Code Online (Sandbox Code Playgroud)

它什么也不打印,因为该语法只打印该文件中该修订版的更改。

git git-show

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

Git显示整个文件的变化

有没有办法让git show命令在查看提交时显示文件的全部内容?例如:如果它当前显示类似的东西

foo.cpp

+++ int main() {
+++    std::cout << "HELLO" << std::endl;
+++ }
Run Code Online (Sandbox Code Playgroud)

我希望输出说:

foo.cpp

#include <stdio> //assuming this was from an earlier commit

+++ int main() {
+++    std::cout << "HELLO" << std::endl;
+++ }
Run Code Online (Sandbox Code Playgroud)

有一个简单的方法吗?

git diff git-diff git-show

3
推荐指数
1
解决办法
2232
查看次数

我怎样才能获得"git show"以显示具有完整上下文的差异?

我正在审查一个非常旧的提交.我希望看到特定提交所做的更改,但我想在完整的上下文中看到它,即我想查看整个文件以及该人所做的更改.以下命令,

git show -w <commit-id>
Run Code Online (Sandbox Code Playgroud)

没有向我展示完整的背景.有什么建议吗?

git git-show

3
推荐指数
1
解决办法
1013
查看次数

如何在不结帐的情况下获取另一个分支中的文件列表

我想列出另一个分支中存在的文件而不进行检出,并且根据在不同的 Git 分支中查看文件而不更改分支,这个命令就足够了:

git show mybranch:mydir
Run Code Online (Sandbox Code Playgroud)

不幸的是,输出并不理想,因为完全没有必要tree mybranch:mydir

tree mybranch:mydir

.gitignore
Makefile
README
Run Code Online (Sandbox Code Playgroud)

如何在不获取任何额外信息的情况下列出另一个分支中的文件(例如tree mybranch:mydir)?

git git-show

3
推荐指数
1
解决办法
300
查看次数

如何 git 显示暂存文件?

我可以做,git show <some-commit>:path/to/some/file但是我要替换什么<some-commit>才能获得文件的当前暂存版本?

上下文:我正在编写一个预提交钩子,我想对暂存文件进行检查,而不是诉诸于隐藏未暂存的更改。有没有更好的办法?

git git-show git-stage

3
推荐指数
1
解决办法
194
查看次数