"未提交的变更"是什么意思

new*_*ike 192 git

我想如果你想跟踪你应该的文件 git add [files you want to track]

我不知道为什么收到这些消息Changes not staged for commit.

如果这些文件没有上传,不应该git告诉我那些文件是 Untracked那样的

在此输入图像描述

我所做的就是从develop分支创建一个新功能并在feature/change_excel_format分支机构工作

我以为那些文件应该处于staged状态,

git status告诉我Changes not staged for commit

在此输入图像描述

为了简单地说,我只知道在git的3个阶段 untracked,staged,committed 任何一个可以告诉我,究竟是什么阶段了Changes not staged for commit 在此输入图像描述

所以如果我修改了文件a (已经在repo中)

和类型git st,git会告诉我Changes not staged for commit

如果我 git a那么文件a将在staged status

如果我修改了file a现在,将有两个状态file agit,对不对?

所以我必须决定是否staged a提交或进行not stage a上演,然后上一个阶段file a将被丢弃?

在此输入图像描述

Ste*_*sca 264

当您更改已存在于存储库中的文件时,git add如果您希望将其暂存,则必须再次使用该文件.

这允许您仅提交自上次提交以来所做更改的子集.例如,假设您有文件a,文件b和文件c.您修改文件a和文件,b但更改本质上是非常不同的,并且您不希望所有更改都在一次提交中.你问

git add a
git commit a -m "bugfix, in a"
git add b
git commit b -m "new feature, in b"
Run Code Online (Sandbox Code Playgroud)

作为旁注,如果您想提交所有可以输入的内容

git commit -a
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • `git commit -a` 不会提交所有内容,只会提交更新的文件,而不是新文件... (3认同)

小智 47

你必须使用git add来暂存它们,否则它们不会提交.认为它通知git你想要提交的更改.

git add -u :/将所有修改过的文件更改git add * :/添加到舞台中, 将修改过的文件和任何新文件(不是gitignore)添加到舞台上

  • 与上面的答案相比,这个答案清晰简洁,这就是我喜欢它的原因。;) (2认同)

小智 14

使用 Git 版本 2.xx(当前版本)

\n

“Changes not staged for commit”意味着某些更改未暂存

\n

因此,要完美地暂存所有更改,请运行以下命令:

\n
git add -A\n
Run Code Online (Sandbox Code Playgroud)\n

然后,运行以下命令:

\n
git commit -m "Update"\n
Run Code Online (Sandbox Code Playgroud)\n

此外,当收到“Changes not staged for commit”时,只需按照我上面所说的运行此命令即可完美地暂存所有更改:

\n
git add -A\n
Run Code Online (Sandbox Code Playgroud)\n

如果运行这些命令,所有更改都不会完美地进行:

\n
git add .\n
Run Code Online (Sandbox Code Playgroud)\n
git add --ignore-removal .\n
Run Code Online (Sandbox Code Playgroud)\n
git add -u  \n
Run Code Online (Sandbox Code Playgroud)\n

下表显示了我上面提到的Git 版本 2.xx(当前版本)中命令的差异:

\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
命令新文件修改文件已删除的文件描述
git add -A\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f暂存所有(新的、修改的、删除的)文件
git add .\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f暂存当前文件夹中的所有(新的、修改的、删除的)文件
git add --ignore-removal .\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f\xe2\x9d\x8c仅暂存新文件和修改后的文件
git add -u\xe2\x9d\x8c\xe2\x9c\x94\xef\xb8\x8f\xe2\x9c\x94\xef\xb8\x8f仅阶段修改和删除的文件
\n


Ami*_*ghe 10

尝试遵循 int git bash

1.git add -u :/

2.git commit -m "your commit message"

  1. git push -u origin master

注意:如果你还没有初始化你的仓库。

首先

git init 
Run Code Online (Sandbox Code Playgroud)

并按顺序执行上述步骤。这对我有用


Agi*_*gis 8

这是Git告诉你的另一种方式:

嘿,您已经做了一些具体的更改,但请记住,当您将页面写入我的历史记录时,更改将不会在这些页面中.

如果你没有明确git add它们,那么对文件的更改不会被暂存(这是有道理的).

因此,当您进入时git commit,这些更改将不会被添加,因为它们不会被暂存.如果你想提交它们,你必须先将它们暂存(即.git add).

  • 我不明白这种行为到底有什么意义。如果我在设置存储库时已经告诉 Git 通过执行“add .”来跟踪文件,并且它可以检测到我对其进行了更改,那么为什么我需要在每次提交时显式添加文件?只是为了对文件进行更改,我必须“添加”、“提交”*和*“推送”。“commit”和“push”之间的界限对我来说是有意义的,“add”和“commit”之间的界限似乎是多余的。 (3认同)
  • 但我没有更改它引用的文件 (2认同)
  • @Hashim 我同意,我真的不明白这个逻辑。 (2认同)

Mam*_*m's 7

请按照以下步骤操作:

1- git stash
2- git add.
3- git commit -m"你的提交消息"

  • 如果您使用“ git stash”,则将这些更改放到“临时位置”以将其恢复,只需键入“ git stash pop”即可从“临时位置”获取更改 (9认同)
  • 除非您阅读@viniciussvl和Cyrus的评论,否则请不要使用git stash (6认同)
  • git stash删除了我所有的更改,这是10个小时的工作:( (4认同)
  • 在这种情况下我为什么要使用 git stash ? (4认同)

Dav*_*tro 5

假设你保存了一个新的文件更改。(例如navbar.component.html)

跑:

ng status
modified:   src/app/components/shared/navbar/navbar.component.html
Run Code Online (Sandbox Code Playgroud)

如果要为该文件上传这些更改,则必须运行:

git add src/app/components/shared/navbar/navbar.component.html
Run Code Online (Sandbox Code Playgroud)

进而:

git commit src/app/components/shared/navbar/navbar.component.html -m "new navbar changes and fixes"
Run Code Online (Sandbox Code Playgroud)

进而:

git push origin [your branch name, usually "master"]
Run Code Online (Sandbox Code Playgroud)

-------------------------------------------------- -------------

或者,如果您想上传所有更改(几个/所有文件):

git commit -a
Run Code Online (Sandbox Code Playgroud)

他们会出现“请输入更改的提交消息”。

  • 如果你 git commit 没有消息,你会看到这条消息 (-m)
  • 您可以通过两个步骤摆脱它:
  • 1.a. 键入多行消息以继续提交。
  • 1.b. 留空以中止提交。
    1. 点击“esc”,然后输入“:wq”并回车以保存您的选择。中提琴!

进而:

git push
Run Code Online (Sandbox Code Playgroud)

还有维奥拉!

  • 我在上面说的一样:`git commit -a` 不会上传所有更改,它不包括新文件。它只会提交对现有文件的更新。 (2认同)