是否有 --staged(又名 --cached)选项用于比较 git stash 中的文件?
在这里,我将最近的提交与暂存文件进行比较(我使用的是显式 @{} 语法,但我知道可以推断出 @{0}):
git diff stash@{0}:spec/blueprints.rb HEAD:spec/blueprints.rb
Run Code Online (Sandbox Code Playgroud)
在这里,我将存储的文件与磁盘上的文件进行比较:
git diff stash@{0}:spec/blueprints.rb spec/blueprints.rb
Run Code Online (Sandbox Code Playgroud)
我如何将当前上演的内容与存储中的内容进行比较?这不起作用:
git diff --staged stash@{0}:spec/blueprints.rb spec/blueprints.rb
Run Code Online (Sandbox Code Playgroud) 我有一个github repo似乎有重复的提交.每个提交都具有相同的消息字符串和相同的日期/作者,但具有不同的SHA-1哈希值.例如,在我的日志中,我发现了以下四重奏:
'commit 55e55517bf32b7ba7382b97f41a1514af8a5f5dc',
'Author: dermen <dermen@stanford.edu>',
'Date: Tue Feb 19 20:03:35 2013 -0800',
'finished with the cromermann edition',
'commit 814fb08e0d42588a500947cba42a980ac24c01b8',
'Author: dermen <dermen@stanford.edu>',
'Date: Tue Feb 19 20:03:35 2013 -0800',
'finished with the cromermann edition',
'commit a5f581f513d12e95627669f61cfe27064ffe8319',
'Author: dermen <dermen@stanford.edu>',
'Date: Tue Feb 19 20:03:35 2013 -0800',
'finished with the cromermann edition',
'commit a264614b674e1ad2c4c8cc953cb27cf77c0d2615',
'Author: dermen <dermen@stanford.edu>',
'Date: Tue Feb 19 20:03:35 2013 -0800',
'finished with the cromermann edition',
Run Code Online (Sandbox Code Playgroud)
除了SHA-1哈希之外,一切都是相同的.当我跑的例子
git diff 55e55517bf32b7ba7382b97f41a1514af8a5f5dc 814fb08e0d42588a500947cba42a980ac24c01b8
Run Code Online (Sandbox Code Playgroud)
我得到零输出 - 这并不意味着提交是相同的.如果这是真的,那么为什么他们会有单独的SHA-1哈希值?也许我误解了,但是SHA-1哈希不应该直接代表文件中的内容吗?因此,如果提交相同,那么它们应该具有相同的哈希值.
在任何情况下,我想知道尝试过滤这些明显的重复是否明智/不明智...任何提示/重定向将不胜感激.
我用来检查项目差异的命令是
git diff | vimdiff -
Run Code Online (Sandbox Code Playgroud)
有没有办法可以在没有现有Vim的情况下刷新diff文件并重复上一个命令?
有没有办法让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)
有一个简单的方法吗?
在预提交钩子中,我想确保没有人(除了 1 人)能够更改 reserved_file.txt
该钩子需要处理当有人执行'git pull'或'git merge some_branch',获取最新的restricted_file.txt但something_else.txt导致冲突的情况。
他解决了冲突并保留了“他们的”restricted_file.txt 版本,执行了“git add”和“git commit”。
此时,pre-commit 钩子被执行,它标识出restricted_file.txt 将被提交。我们希望仅当文件与来自 'git pull' 或 'git merge' 的文件相同时才允许提交(换句话说,如果他保留了“他们的”版本)。
有人知道在解决冲突期间是否可以确定文件是否与“他们的”相同?
相当于以下不存在的命令:
git diff --cached --against_theirs -- restricted_file.txt
Run Code Online (Sandbox Code Playgroud) 我想知道如何从 9.3.1-STABLE 和 TN-9.3.1-STABLE 获取 git diff,并具有以下文件夹/git 结构
root@build3:/tank/home/stable-builds/FN # git branch
9.3-STABLE
* 9.3.1-STABLE
root@build3:/tank/home/stable-builds/TN # git branch
TN-9.3-STABLE
* TN-9.3.1-STABLE
master
Run Code Online (Sandbox Code Playgroud)
任何答案将不胜感激。
我希望做一个差异就像这一个。
唯一的区别是我不想“手动”通知标签名称,我希望它们由 git 命令检索。
我知道这会git describe --tags返回我的最新标签。但是上一个呢?如何获得?
基本上我想要的是:
$ git diff $(git_command_to_get_previous_tag) $(git describe --tags)
Run Code Online (Sandbox Code Playgroud)
我不想要的:
$ git diff 1.0 2.0
Run Code Online (Sandbox Code Playgroud) 我有这个:
branch: commit 1, commit 2, 3,4
master: commit 1, commit 2, 3,4,5,6,7
Run Code Online (Sandbox Code Playgroud)
你怎么能在分支之后commit 2(在那个历史点上)和主分支之间进行区分commit 3?
这是我之前提出的另一个问题的后续措施。
正在编辑之前,最初创建的文件something被重命名为somethingelse可观察到这里:
git mv something somethingelse
Run Code Online (Sandbox Code Playgroud)
该文件somethingelse然后得到重命名回至something第二VIM编辑之前:
git mv somethingelse something
Run Code Online (Sandbox Code Playgroud)
git mv something somethingelse
Run Code Online (Sandbox Code Playgroud)
如果在这一点上我添加abc到代码中,我们将最终得到:
First line of code. abc
Run Code Online (Sandbox Code Playgroud)
我认为这是第1行增加了4个字节,而这又将在此结束:
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: something
deleted: somethingelse
Run Code Online (Sandbox Code Playgroud)
然后,如果我们添加换行符并在第三行中键入abc(也应为4个字节,如果有错,请更正我):
First line of code.
abc
Run Code Online (Sandbox Code Playgroud)
突然,Git会检测到重命名(包括编辑):
On branch master
Changes to be committed:
(use "git reset HEAD …Run Code Online (Sandbox Code Playgroud) 如果我理解正确,如果我这样做
git diff master devel ./my_file
Run Code Online (Sandbox Code Playgroud)
我得到了分支的两个 HEAD 之间的差异。但是,如果我对它们进行了更改master并暂存了它们,我想我可以得到未暂存文件和另一个分支中的相应文件之间的差异
$ git diff --cached master devel ./my_file
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
usage: git diff [<options>] [<commit> [<commit>]] [--] [<path>...]
Run Code Online (Sandbox Code Playgroud)
那么获取文件中的阶段性更改与另一个分支中的相应文件之间的差异的正确方法是什么?