如何列出仅在git中当前分支中进行的所有未提交的更改

use*_*881 6 git branch git-checkout git-commit

我是git的新手,最初我曾经只在主分支上工作然后我读了一些关于git分支的东西,我很惊讶它的力量所以我开始在我的工作流程中使用分支

当我开始分支我的主分支是干净的没有提交.然后我创建了新的分支feature1

git checkout -b feature1
Run Code Online (Sandbox Code Playgroud)

我在分支feature1中做了我的更改,添加了一些js和css文件.然后我从master分支创建了另一个分支,而没有提交对分支feature1所做的更改,如下所示:

git checkout master
git checkout -b feature2
Run Code Online (Sandbox Code Playgroud)

我在feature2分支中添加了一些代码并添加了一些新的css文件,然后我再次从master 创建了另一个分支feature3,并在分支feature2中提交了更改,如下所示:

git checkout master
git checkout -b feature 3
Run Code Online (Sandbox Code Playgroud)

我在feature3分支中添加了一些新的代码和一个新的css文件.现在我做的时候:

git status
Run Code Online (Sandbox Code Playgroud)

我得到了我修改但未在所有3个分支中提交的所有文件的列表.我原以为我只会获得当前分支中修改的文件列表,即分支feature3,现在我不记得我在哪个分支中创建了哪些文件.

任何人都可以帮我列出我在特定分支中创建或修改的文件并提交它们.到各个分支机构.

例如

列出在feature1分支中修改或创建的所有文件,并将它们提交到feature1分支,并对所有3个分支执行此操作.

我也想知道如何从master分支创建一个分支,而不会获得在其他分支中修改但未提交的其他文件.即我希望新分支是精确克隆的主人,并注意提交.

Bal*_*Pal 8

刚刚启动gitk --all,您可以检查所有分支,更改,等等.选择一个点并右键单击另一个点,然后从菜单顶部获得两个版本的差异.

git中的分支只是提交中的"标签".如果您在主服务器上创建一个分支,它就像您可以获得的那样完美"克隆".虽然它实际上只是一个包含相同哈希的41字节文件.

我认为你应该把自己的一些东西归结为什么,从描述中我无法推断出你做了什么,尤其是你所追求的.


aym*_*met 5

如果您没有提交文件,则无法确定文件创建的分支.


Mar*_*her 5

正如@abeaumet所提到的,如果您创建文件但不提交它们,则在更改分支时无法跟踪它们.

这是因为它们位于您的工作树中,而不是您的git存储库.您的工作树实际上是存储库的已检出版本,以及您当前正在进行的任何更改.移动分支不会删除这些未跟踪的文件,git会将它们留在工作树中,这样它们就不会被删除.

阅读本问题中链接的一些文章,以了解您的存储库和工作树之间的区别.