如何列出上次推送到远程 Git 存储库时推送的所有文件?
我有一个项目,只修改了几个文件并将add, commit and push其发送到远程。现在我如何查看已推送到远程的文件列表?
它应该与上次提交 ID 有关吗?
f1---f2 - short term branch "feature1"
/ \
h--h--h---h--h1--h2- - long term branch "hofix"
/ \ \ \
/ \ \ \
m----m------m---m------m-- - long term branch "master"
| |
1e1e1e 2f2f2f
Run Code Online (Sandbox Code Playgroud)
我合并了有 2 个提交差异的分支(总共更改了 15 个文件)。并跑:
$ git show --pretty="format:" --name-only 1e1e1e..2f2f2f
Run Code Online (Sandbox Code Playgroud)
我收到了超过 42,000 个从我的项目中更改的文件。为什么?
预期:我将显示 f1、f2、h1、h2 提交的差异
PS 可能是因为“合并分支'origin/0411-hotfix'”提交?
在两次测试提交中,第一个只有操作git mv file moved_file,第二个只有操作mv moved_file moved_again_file && git add -A moved_file moved_again_file,两者都在提交之前显示为重命名git status,但在git commit --verbose它们中显示为新文件和已删除文件。
我期望git diff-tree HEAD在每次提交后显示一个R(重命名)状态,但我不断得到两个: anA和 a D。
我正在尝试编写一个脚本,该脚本将根据文件状态执行操作,但如果它们始终显示为添加/删除,我无法正确规划R(或)状态。C
Git 的版本是 1.8.3.1(如果有区别的话)。
正如我在这里学到的,我们可以告诉git diff忽略以*using开头的行:
git diff -G '^[[:space:]]*[^[:space:]*]'
Run Code Online (Sandbox Code Playgroud)
我如何告诉 git 忽略以一个或更多(例如:)开头的行* Generated at,而不仅仅是一个字符?
这个文件应该被忽略,它只包含一些微不足道的变化:
- * Generated at 2018-11-21
+ * Generated at 2018-11-23
Run Code Online (Sandbox Code Playgroud)
此文件不应被忽略,它不仅包含微不足道的更改:
- * Generated at 2018-11-21
+ * Generated at 2018-11-23
+ * This line is important! Although it starts with a *
Run Code Online (Sandbox Code Playgroud) 所以我在我的分支internal_env_board2 上,我试图切换到分支battery_board。但是,当我尝试这样做时,出现错误:
$ git checkout battery_board
error: Your local changes to the following files would be overwritten by checkout:
internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx
Please commit your changes or stash them before you switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)
我很生气,因为我知道我没有修改这个 .xlsx 文件。我所做的唯一一件事就是打开 excel 文件,查看其内容,然后再次关闭它。出于某种原因,git 认为此文件中有更改。我尝试使用 git diff 来查找工作树副本和最近提交的副本之间的差异,并得到以下结果:
$ git diff HEAD internal_env_board_with_LCD_BOM.xlsx
diff --git a/internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx b/internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx
index 0fb3369..10c945e 100644
Binary files a/internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx and b/internal_env_board/internal_env_board2/internal_env_board_with_LCD_BOM.xlsx differ
Run Code Online (Sandbox Code Playgroud)
我在理解这个 diff 命令的输出时遇到了很多麻烦。它只是告诉我它们不同,但不是如何。
所以我想我的两个问题是:
1. 为什么git只因为打开了文件就认为我修改了文件?
2. 如何读取 命令的输出git diff HEAD ?
我需要知道两次提交 ( HEAD~1 and HEAD) 到存储库之间更改的行号
git diff HEAD~1 HEAD
Run Code Online (Sandbox Code Playgroud)
以令人困惑的 diff 格式返回信息
我能够通过查看 git diff 中的标记来识别新添加的文件或删除的文件(即--- /dev/null意思+++/dev/null是添加、删除)
是否可以识别修改后的文件中的行号
我的需要是
path/to/file/MyClass1.java
23-56
59-60
72-74
path/to/file/MyClass2.java
1-34
54-56
Run Code Online (Sandbox Code Playgroud)
23-56 、 72-74 和 59-60 是 HEAD~1 和 HEAD 之间更改的行/行范围(表示为行号)
PS:我在其他问题上发现的一些线索似乎已经过时了任何帮助将不胜感激!
我正在编写一个使用 git 的脚本。它需要知道所有重命名的目录和文件的旧文件路径和新文件路径。
我想要做的示例:git diff --find-renames-only someGitHash someGitHash
然后我想看到一个如下列表:
rename old/path/old-file-name.extension->new/path/new-file-name.extension
或者
rename from source/README.md
rename to documentation/README.md
Run Code Online (Sandbox Code Playgroud)
或者类似的东西,只要它具有带有旧目录路径的旧文件名和带有新目录路径的新文件名。
到目前为止,我到处乱逛和搜索,我能找到的最接近的东西是git diff --find-renames
git diff --find-renames为我提供了我想要的数据,但每个文件的数据太多。这绝对不是我想要处理和解析的事情。我正在使用的一些 git 存储库可能有数千个文件/文件夹重命名...
例子:
...tons more data that I do not want to parse through
rename from source/README.md
rename to documentation/README.md
...tons more data including diffs of files before and after...
this pattern continued for each file...
Run Code Online (Sandbox Code Playgroud)
如何在没有额外数据的情况下列出两次 git 提交之间的所有文件和目录重命名?
任何帮助将不胜感激,谢谢!
假设我有以下 git 结构:
A - B - C - D - E - F master
\_ G - H - I branch
Run Code Online (Sandbox Code Playgroud)
git checkout branch; git log 不识别分支与主分支的点。
如果我想检查此分支中的所有更改怎么办?
我试图找到 2 个提交 ID 的差异。当我 git diff 时,它会打印文件的更改状态。“M”的意思是“修改”。“D”的意思是“删除”。“A”的意思是“添加”。但是“R087”代表什么?
git diff f0d1122b af122334 --name-status
M service/user_feature/search_user_feature_redis.h
D service/user_feature/search_user_feature_tair.cc
A service/user_feature/user_feature_tair.cc
R087 service/user_feature/search_user_feature_tair.h service/user_feature/user_feature_tair.h
D thirdparty/easy/BUILD
Run Code Online (Sandbox Code Playgroud) 我目前在第二个分支机构上工作NC12-changePassword。
对master分支进行了更改,该分支处理字符串的解密。我需要这些新更改才能在我的分支上实现新功能,因此我合并了这些更改。
我做了一个git pull,没有冲突。当我运行时,git log它显示合并提交。另外,当我运行时,git merge master它告诉我一切都是最新的。
但是我的代码不起作用,当我运行git时,diff NC12-changePassword master它列出了in master中没有的内容NC12-changePassword。这对我来说没有意义,因为我已经合并了更改,因此master中的所有内容都应包含在其中NC12-changePassword。
我的理解是我的分支应该可以正常运行master并且代码应该可以正常工作。还是我想念一些东西:-\。
git ×10
git-diff ×10
diff ×1
file-rename ×1
git-branch ×1
git-checkout ×1
git-log ×1
line-numbers ×1
merge ×1
regex ×1
rename ×1