我认为如果你想跟踪文件,你应该git添加[你想跟踪的文件]

我不知道为什么我收到消息说更改没有提交。

如果这些文件不是暂存的,git会显示这些文件是Untracked的

我所做的只是从develop分支中创建一个新特性,并在feature/change_excel_format分支中工作

我以为那些文件应该处于阶段性状态,

但是git状态告诉我没有为提交准备更改

简短的, 我只知道git有3个阶段untracked, staging, committed 谁能告诉我,“改变”的阶段是什么,而不是“提交”的阶段

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

然后输入git st, git会告诉我Changes not staging for commit

如果我git a,那么文件a将处于阶段性状态

如果我现在修改文件a,文件a在git中会有两种状态,对吧?

所以我必须决定是让有舞台的a被提交还是让没有舞台的a被舞台, 然后之前的暂存文件a将被丢弃?


当前回答

Git版本2.x。x(当前版本)

“未提交的更改”意味着某些更改未提交。

因此,为了完美地进行所有更改,运行以下命令:

git add -A

然后执行如下命令:

git commit -m "Update"

此外,当得到“Changes not staging for commit”时,就像我上面已经说过的那样,运行这个命令来完美地staging所有更改:

git add -A

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

git add .
git add --ignore-removal .
git add -u  

这个表格显示了我在Git Version 2.x中提到的命令的差异。x(当前版本):

Command New Files Modified Files Deleted Files Description
git add -A ✔️ ✔️ ✔️ Stage all (new, modified, deleted) files
git add . ✔️ ✔️ ✔️ Stage all (new, modified, deleted) files in current folder
git add --ignore-removal . ✔️ ✔️ Stage new and modified files only
git add -u ✔️ ✔️ Stage modified and deleted files only

其他回答

当您更改存储库中已经存在的文件时,如果您想让它暂存,则必须再次添加它。

这允许您仅提交自上次提交以来所做更改的子集。例如,假设您有文件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"

顺便说一句,如果你想提交所有东西,你只需要输入

git commit -a

我也收到了这条消息,所以我在python代码中这样做:

text = input("Insert commit: ")
os.system("git add .")
os.system("git commit -m %s" %(text))
os.system("git push origin master")

它成功了,现在没有问题了。 这些命令在带有python3的debian服务器上使用。

我犯了一个愚蠢的错误。我试图在一个git没有初始化的文件夹中运行这个命令。确保你有。git文件夹或运行命令

git init

你必须使用git add来执行它们,否则它们将无法提交。它会通知git哪些是你想要提交的更改。

Git add -u:/将所有修改过的文件添加到舞台 Git add *:/将修改过的和任何新的文件(没有gitignore'ed)添加到舞台

对我来说,有效的方法是转到根文件夹,即.git/所在的文件夹。 我在其中一个子文件夹中得到了错误。