2012-06-17 49 views
12

我們使用git進行版本控制,現在我們在嘗試上傳最新版本時收到很多警告。我是git的新手,並沒有耐心的限制,有沒有什麼辦法可以刪除所有內容並上傳當前版本?刪除所有內容並上傳新版本

這是我現在嘗試上傳時得到的結果。

$ git push origin master 
Username for 'https://code.google.com': 
Password for 'https://<removed>@code.google.com': 
To https://code.google.com/p/<removed>/ 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to 'https://code.google.com/p/<removed>/' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 
hint: before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 
+2

這將有助於顯示你正在嘗試命令的順序和你得到的輸出 –

+0

「刪除所有內容並上傳當前版本」聽起來很像你沒有使用git進行版本控制,而是用它來代替一個出版工具。你能發佈你收到的警告嗎?即使你沒有耐心去理解他們,但如果他們能夠幫助,他們也不得不去做。 –

+0

我粘貼了我現在得到的提示。我明白我以前得到了什麼,但它似乎不必要,因爲我的計算機上的代碼運行良好,並且在線版本上的代碼已過時。我只是想開始新鮮。爲什麼如此犯規我不知道 – zehelvion

回答

18

1)在您的存儲庫文件夾

2)運行git rm *告訴混帳刪除所有文件(具有git status檢查是否左邊有任何未分級的文件)

3刪除一切。 )做一個git commit -a -m "commitmessage"一個git push origin master刪除遠程服務器的git

4)檢查,如果你有一個空的遠程倉庫現在

上的所有文件

5)所有的新文件複製到本地存儲庫文件夾

6)運行git add *通知Git添加所有新文件(git status是否有左側有任何未分級的文件檢查)

7。 )提交併推送新文件

現在,您應該在遠程git存儲庫上安裝該版本。

+0

嗨,我粘貼我現在得到的結果,你能幫忙嗎? – zehelvion

+1

爲什麼不能使用'git push -f'? –

+0

我在知道問題是push命令之前寫了答案。我以爲亞瑟不知道如何「開始新的」。在編輯的問題中,我認爲'git push -f'會起作用,儘管我一點也不確定,如果遠程git存儲庫能夠達到您的預期。 –

12

您無法推送,因爲遠程上存在未合併到您嘗試推送的提交中的提交。如果您想放棄遠程中當前的所有更改,則可以執行此類操作。

git fetch 
git merge -s ours origin/master 
git push origin master 

請注意,這會拋出您在本地存儲庫中沒有的遠程引入的更改。

+0

僅供將來參考,請在新版git版本中將「--allow-unrelated-historories」添加到合併命令中。 –

2

如果你想從遠程倉庫,並在事後永久刪除文件,好像他們是不是在第一時間推到重新開始,然後基地this answer你可以做以下

下運行本地(注意*刪除每個文件夾/文件):

git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch *" -- --all 

現在是時候更新本地的Git引用執行它忘掉所有的歷史它有這些文件的

rm -rf .git/refs/original/ 

git reflog expire --expire=now --all 

git gc --prune=now 

git gc --aggressive --prune=now 

現在推的所有更改到遠程倉庫的力,以確保遠程回購還會清除所有這些文件

git push --all --force 

彷彿沒有文件存在過這將清理遠程倉庫。