“更改未上演以提交”是什么意思


239

我想如果你想跟踪文件,你应该 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

在此处输入图片说明

为了简单,我只知道有3个阶段的git untrackedstagedcommitted 任何一个可以告诉我,究竟是什么阶段了Changes not staged for commit 在此处输入图片说明

因此,如果我修改了文件a (已经在仓库中)

并输入git stgit会告诉我Changes not staged for commit

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

如果我file a现在修改了,file ain中会有两个状态git,对吗?

因此,我必须决定是staged a进行提交还是进行not stage a分段,然后将先前分段的分段file a丢弃?

在此处输入图片说明


3
如果收到此消息,并且您是否要提交此文件(a),请确保在进行git add时,您位于正确的目录路径(用于添加所有项目的项目根路径)中
Sadee

Answers:


325

更改存储库中已存在的文件时,git add如果要暂存它,则必须再次进行更改。

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

git add a
git commit a -m "bugfix, in a"
git add b
git commit b -m "new feature, in b"

附带说明一下,如果您要提交所有内容,只需键入

git commit -a

希望能帮助到你。


1
因此,如果这些文件是在回购中。并且我已经更改了它们,我也可以git commit THEM不添加它们直接添加,对吗?
newBike 2014年

1
当然。在那种情况下,无论不同文件中是否存在分阶段的更改,都只会提交列出的文件。
Stefano Falasca,2014年

1
我有同样的问题,但我的问题也与未跟踪文件的子模块原因有关。因此,在我的子目录中,我还使用git添加了所有更改,问题已经消失了。
elia

1
我已经做完了git clean -fd,但我仍然要这样做。我想摆脱所有的变化。我还应该做什么?
亲爱的

3
git commit -a不会提交所有内容,仅提交更新的文件,而不提交新文件...
Martin

62

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

git add -u :/将所有修改过的文件更改git add * :/添加到阶段中将修改过的文件 和所有新文件(不是gitignore'ed)添加到阶段中


2
与上面的答案相比,这个答案清晰明了,这就是为什么我喜欢它。;)
oaxacamatt

13

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

嘿,我看到您进行了一些更改,但是请记住,当您将页面写到我的历史记录时,这些更改将不会出现在这些页面中。

如果没有显式地更改文件,则不会暂存更改git add(这很有意义)。

因此,当您使用时git commit,这些更改不会被添加,因为它们没有被暂存。如果要提交它们,则必须先上演它们(即git add)。


2
但我没有更改它所引用的文件
Eoin

1
我不知道这种行为到底有多有意义。如果我已经add .在设置重新发布记录时告诉Git通过执行此操作来跟踪文件,并且它可以检测到我对其进行了更改,那么为什么每次提交时都需要显式添加文件?只是做出改变到一个文件,我要addcommit push。之间的界限commit,并推动对我来说很有意义,之间的界限add,并commit似乎可笑的多余。
Prometheus

1
@Hashim我同意,我真的不明白逻辑。
Herman Toothrot

6

请按照以下步骤操作:

1- git隐藏
-git add。
3- git commit -m“您的提交消息”


5
git stash删除了我所有的更改,这是10个小时的工作:(
viniciussvl

13
如果您使用了“ git stash”,则将这些更改放到“临时位置”以使它们恢复原状,只需键入“ git stash pop”即可从“临时位置”获得更改
Cyrus Zei 18/10/28

12
在您阅读@viniciussvl和Cyrus的评论之前,请不要使用git stash
破旧的

1
在这种情况下,为什么还要使用git stash?
Tobias Kaufmann

4

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

跑:

ng status
modified:   src/app/components/shared/navbar/navbar.component.html

如果要上载该文件的更改,则必须运行:

git add src/app/components/shared/navbar/navbar.component.html

然后:

git commit src/app/components/shared/navbar/navbar.component.html -m "new navbar changes and fixes"

然后:

git push origin [your branch name, usually "master"]

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

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

git commit -a

然后他们将显示为“请输入提交消息以进行更改”。

  • 如果您git commit没有消息(-m),则会看到此消息
  • 您可以通过两个步骤摆脱它:
  • 1.a. 键入多行消息以使提交向前移动。
  • 1.b. 留空以中止提交。
    1. 点击“ esc”,然后输入“:wq”,然后按Enter保存选择。中提琴!

然后:

git push

还有中提琴!


2
我在上面说的同样:git commit -a不上传所有更改,不包含新文件。它将仅将更新提交到现有文件。
马丁

3

尝试跟随int git bash

1。git add -u :/

2。git commit -m "your commit message"

  1. git push -u origin master

注意:如果您尚未初始化您的仓库。

首先

git init 

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


在git冲突中,这个问题对我有用,在该冲突中,我无法从本地存储库中删除文件并将其从本地存储库提交到远程master分支。
Siwoku Adeola

1

这意味着它们不会被添加为提交状态,您将不得不执行git add scripts / excel_parser.py之类的操作来进行它们的转换..一旦它们被转换为git status时,它们将被转换并且git commit将对其进行提交

您可以git commit -a -m“ all checkin”,它将自动暂存并提交树中的所有文件


1

将新文件添加到代码中后,现在尝试提交代码而不进行暂存(添加)时,可能会看到此错误。

为了解决这个问题,您可以先使用git add(git add your_file_name.py)添加文件,然后提交更改(git commit -m "Rename Files" -m "Sample script to rename files as you like"


1

我已经阅读了以上所有答复,并在终端机中尝试了以下步骤,这些步骤对于在master上更新新文件和更改文件非常有效。

1)git添加 2)git commit -m“您的消息” 3)git push origin master

我希望这可以帮助你。


1

进行git add时,您可能在错误的目录中。:-)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.