[英]Cannot push commits to a remote repository - GitHub
我有一個正在Eclipse中工作的Android項目。 我在github上為自己創建了一個帳戶,並使用GitHub for Mac客戶端將項目中的代碼推送到了在線遠程存儲庫中。 隨后,我對代碼進行了一些較小的提交,一切順利。
現在,代碼已進行了一些重大更改,當我嘗試使用Mac客戶端進行提交時,在Sync上收到以下錯誤消息:
Sync Failed: Please commit all your changes before syncing.
為了解決這個問題,我嘗試了以下方法:
1.嘗試從命令行使用git push origin/master
。 這導致project/info/refs not found: did you run git update-server-info on the server?
2.我檢查存儲庫名稱,位置等是否正確,是否正確。
我的問題:
1.“更改”部分顯示大量的.class
文件。 鑒於.class文件包含在.gitignore
,為什么它們會出現? 現在它們已經出現了,是否也需要選擇並提交它們?
2.上面的錯誤消息是什么意思,我該如何解決?
編輯1:
在執行以下命令后:
1. git ls-tree -r master | grep .class
git ls-tree -r master | grep .class
這表明.class
文件也已添加到存儲庫中。
2. git rm **/*.class
.class
從存儲庫中刪除所有.class
文件。
3. git commit -m "remove class files
4. git push origin master
導致:
fatal: https://github.com/user/project.git/info/refs not found: did you run git update-server-info on the server?
另外,在命令行上運行git status
顯示以下行:
# On branch master
# Your branch is ahead of 'origin/master' by 16 commits.
#
這值得關注嗎?
我在這個主題上經過了很多討論,並研究了諸如SSH-keygen之類的東西,但是我不認為這是解決我的問題的方法。 我是git的新手,以前只使用過cvs,因此,如果可能的話,請簡化您的答案。
我的.gitignore
文件:
# built application files
*.apk
*.ap_
# files for the dex VM
*.dex
# Java class files
*.class
# generated files
bin/
gen/
# Local configuration file (sdk path, etc)
local.properties
# Eclipse project files
.classpath
.project
# Proguard folder generated by Eclipse
proguard/
# Intellij project files
*.iml
*.ipr
*.iws
.idea/
*.class
*.class
*.class
*.jar
*.class
*.class
bin/dexedLibs/slf4j-android-1.6.1-RC1-e5ffa87f4686586f2e03d9069f131ba3.jar
*.class
您首先需要將提交推送到本地存儲庫,然后將提交推送到遠程存儲庫。 這使您可以非常輕松地與遠程存儲庫進行合並,因為每次提交都具有唯一的SHA ID,該ID用於告訴您的存儲庫與遠程存儲庫的關系。
請執行下列操作:
git add .
git commit -m "your commit message"
git push origin master (NOT git push origin/master)
編輯
您是否偶然更改了github存儲庫的名稱? 這樣的問題應該有所啟發。
您可能已經在存儲庫中提交了.class文件。 在這種情況下,即使您將* .class放在.gitignore文件中,git也會繼續跟蹤它們。 運行git ls-tree -r master | grep .class
git ls-tree -r master | grep .class
。 如果給出任何輸出,則表示您已提交.class文件。 如果是這樣,請嘗試運行git rm **/*.class
並提交更改。
您不應該運行git push origin/master
,而需要先指定一個遠程節點,然后再選擇一個分支。 現在,git將嘗試將origin/master
解析為遠程origin/master
。 請改用git push origin master
(使用空格而不是/)。 origin/master
是一個分支,無論如何您都不應該改變自己。
此外,您在.gitignore中多次擁有* .class。 多次出現不會改變git的行為。
git commit。 '將提交所有更改。
也許您可以嘗試一下...(我不確定,只是一個主意)
問題是我使用個人ID登錄到GitHub
的Mac客戶端。 該個人ID未在項目中注冊為協作者。 將我的個人帳戶添加為協作者(一個丑陋的解決方法)解決了該問題。 我能夠提交對存儲庫的更改。
我發現有用的其他建議:
-從存儲庫中刪除.class
文件。
要檢查是否跟蹤了.class
文件,請執行以下操作: git ls-tree -r master | grep .class
git ls-tree -r master | grep .class
要將它們從倉庫中刪除並提交: git rm **/*.class
然后是git commit -m "your message goes here"
推送所有更改: git push origin master
。
為了能夠在多個帳戶中使用git
,我發現這里的帳戶非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.