2009-11-16 116 views
25

我剛剛提交了我的工作樹,首先添加到索引,用「$ git commit -m'test'」我將stdout-put從此保存到一個文件中,並且從頂部看到它說git commit problems

# On branch master 
# Changed but not updated: 
# (use "git add/rm ..." to update what will be commited) 
# (use "git checkout -- ..." to discard changes in working directory)" 

的問題是,我的工作樹沒有被致力於爲回購協議,我有一種感覺,這有什麼用它做

感謝

+0

是什麼操作系統您使用的?具體來說,你在Windows上使用Git,如果是這樣,在哪個環境下? – 2009-11-16 23:15:04

+0

Ubuntu服務器,git 1.5.6 – deepblue 2009-11-16 23:18:39

+1

我可能會建議的第一件事是升級你的Git版本,最新版本是1.6.5.3。我很確定你引用的這些特定消息自1.5.x以來已經有所改進。 – 2009-11-16 23:25:14

回答

5

在您承諾的改變,您必須先將其添加到索引中:

git add myfile 
git commit -m "test" 

或者,你可以在一個更SVN樣的工作作風,並承諾是改變了一切:

git commit -a -m "test" 

或者你也可以添加和提交一個文件:

git commit myfile -m "test" 
+0

做了所有這些。正如我在Jed的回答中提到的那樣,我移動了很多文件,所以我不認爲commit -a會在這種情況下工作,因爲文件被刪除並重新引入...我認爲git將它們視爲新的文件然後 – deepblue 2009-11-16 23:20:22

+0

我只能建議你沒有添加文件到存儲庫,當你以爲你做;您的消息正是我在首次運行'git commit'而沒有'git add'時看到的。奇怪的是 – 2009-11-16 23:30:19

+0

。我做了一個'git add'。每次。那應該做trick.hmmm。感謝您指出,雖然 – deepblue 2009-11-16 23:34:47

0

你真的必須閱讀文檔。

git add yourfile 
git commit -m "test" 

或者,提交所有修改過的文件 -

git commit -a -m "test" 
+0

ofcourse我把工作樹添加到索引首先($ git add。),之後我跑了($ git commit -m'test'> view_file)。我從最後一次提交重組了我的工作樹,所以很多已刪除的文件舊的地方,並將其重新插入到新的地方...這就是爲什麼我保存輸出到一個文件,以便我可以回顧一下git所說的 – deepblue 2009-11-16 23:18:06

2

你在你面前做一個承諾git add .

git addgit commit之前執行git status以查看更改和上演的情況總是明智的。

git diff以查看您即將提交的具體更改也非常方便。

以下是git status顯示的內容,如果您添加了文件並重命名了它。

[email protected]:~$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: foo.txt 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: foo.txt 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# bar.txt 

此時你可以做git add .然後git status will give you more information, perhaps pointing out that you still have a new file and a deleted file called foo.txt的. To fix this you need to manually的git RM foo.txt的before doing混帳commit`

在,如果你有一個混帳回購協議要文件到未來移動你應該使用git mv

+0

耶'git狀態' 很酷。它也在報告我提出的問題。這些該死的變化只是沒有承諾。我花了一整天的時間閱讀教程和文檔,試圖找到可以嘗試的東西。 – deepblue 2009-11-16 23:24:05

+1

如果您想要包含在提交中的任何更改,則需要重做'git add'。如果你做了'git status',然後'git add .',然後'git status',你應該看到一個區別。 – mlibby 2009-11-16 23:26:19

+0

通過「進行任何更改」,我包括對文件的更改,重命名文件,刪除文件,添加文件......任何可能混淆git的內容。 – mlibby 2009-11-16 23:30:34

1

另一件需要注意的事情,git add在運行時將這些文件的內容添加到索引中。如果您運行git add然後更改這些文件,新的更改將不會顯示在索引中。

+0

'add'和'commit'之間沒有額外的工作 – deepblue 2009-11-16 23:22:09

0

如果您移動文件,之後使用git add,混帳只增加新的副本,但不刪除舊的:

$ git status 
# On branch master 
nothing to commit (working directory clean) 
$ mv from to 
$ git add . 
$ git status 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# new file: to 
# 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
$ git commit -m "..." 
$ git status 
# On branch master 
# Changed but not updated: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: from 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

刪除舊的副本,你也應該使用git rm

$ git rm from 
rm 'from' 
$ git commit -m "..." 
$ git status 
# On branch master 
nothing to commit (working directory clean) 

但我不明白爲什麼它不允許你提交這些更改。

28

簡短的回答:

git push -u origin master

較長的答案:

你最有可能試圖推動提交到尚未創建一個分支 - 例如,在新創建的Github上沒有自動創建自述文件的存儲庫。通過調用git push -u origin master,您可以指定需要推送到的遠程(源,通常是git默認值)和分支(主,在典型情況下也是默認)。根據git的文檔:

-u--set上游 對於每一個分支是最新的或成功推,添加上游(跟蹤)參考,由參數少GIT中使用-pull(1)和 其他命令。有關更多 信息,請參閱git-config(1)中的branch..merge。

這意味着該命令的成功運行,從此後你就可以只使用git pushgit pull,它會默認爲origin master(有一些exceptions)。

0

夥計們我和Git有同樣的問題。
我在Windows上運行的Cygwin 8

  1. 檢查,如果你有,你要提交到庫。
  2. 檢查路徑

$ git remote -v#這是你可以看到你的路徑

$ git remote set-url origin [email protected]:username/repos.git#這是你如何遠程設置新的路徑文件推到正確的存儲庫。 $ git remote -v#檢查是否設置了正確的路徑。

  1. $ git add。

4.

$ git push origin master 

希望這有助於