我剛開始玩弄git(來自SVN),我確信我沒有以正確的方式思考 - 我從github克隆了一個倉庫,並從中刪除了標籤並添加了我自己的倉庫。但是當我做一個git狀態或git diff時,它表示沒有任何提交。它不應該與我從克隆的github項目進行比較嗎?我正在想這是我所知道的錯誤方式,但也許有人可以幫我把這個包裹起來。添加/刪除標籤不會顯示在git status或git diff?
回答
你是看着這個錯誤的方式。
你需要做的是忘記你對svn的瞭解。在svn中,你有一個倉庫,它位於服務器上。您更改文件並提交它們的增量。
然而,在你的計算機上有一個倉庫。如果你願意,你也可以在github上找到一個。其他人在您的項目上工作也將擁有自己的存儲庫。請注意我說的知識庫。是!庫!這意味着你的計算機中擁有所有的歷史記錄。你可以在你自己的計算機上提交,創建標籤,分支,合併,所有內容,而不用在github中觸摸任何東西。
歡迎使用分佈式版本控制系統。
與svn的另一個區別是,你沒有看到提交作爲增量,但你看到每個提交作爲你項目的整個文件集。因此,例如svn的奇怪合併(你說合並這個修訂版本和我的文件修訂版本之間的區別)在git中不存在。您只需合併該項目的快照即可。
然後提交意味着將更改提交到您的文件到您自己的存儲庫。創建標籤是另一個過程。一個不會改變你的文件的過程(與創建標籤意味着複製文件的svn不同)。 git中的標籤只是指向特定提交的指針!
所以,你想要做的是兩種不同的東西:
提交:提交資料庫修改。該命令是
git commit
您可以將文件添加到與
git add some_file
提交和提交更改的只是一部分,你的源代碼(這東西你不使用svn獲得)。或者,如果您要提交所有更改的文件,請添加-a
選項。推送:推送發送到另一個存儲庫,讓我們說一個遠程存儲庫,名爲origin(指向github),所有你在自己的倉庫中。這包括所有提交,並且如果您指定
-tags
也是您創建的標籤。例如:git push origin master -tags
或者,當你想更新你的資料庫,從起源,你首先:
取:更新你的資料庫到遠程之一。著名的:
git fetch origin
由此帶來的所有新提交和存在於
origin
標籤,但不是你的本地倉庫。合併:然後更新您的主分支遠程年代:
git merge remotes/origin/master
所以回到你的情況下,沒有沒有什麼承諾,但也有您需要按標籤。最後要告訴你的是,當你刪除標籤時,你只能從自己的存儲庫中刪除它們。爲了從遠程刪除:
git push origin :refs/tags/tag_name
理解這種語法需要更多一點的混帳推高級教程,但現在接受這一點。請注意,刪除標籤強烈不滿。這是因爲如果有人下載該標籤並開始使用該標籤並依賴該標籤,那麼如果她需要該標籤,她以後就無法再找到該標籤。因此,在創建標籤時,確保軟件/庫符合您的要求。
標籤指向其他對象它git(通常提交)。如果刪除標籤(通常不應該添加)或添加它們,則不會添加屬於提交的任何內容,因此不需要提交任何內容。您可能需要閱讀the git object model。
- 1. git diff-tree顯示刪除但沒有刪除git日誌
- 2. `git stash --patch`顯示的行改變了`git diff` /`git status`沒有顯示
- 3. git status顯示修改,git checkout - <file>不會刪除它們
- 4. git diff --numstat with --name-status
- 5. 如何在Windows上使用GUI添加或刪除git標籤?
- 6. git diff顯示不足
- 7. Git diff與遠程標籤
- 8. 爲什麼不會「git add *」添加「git status」所表示的未分檔文件?
- 9. git status和git diff空失敗後git我
- 10. 同時顯示git diff和git狀態
- 11. git status - 不顯示未跟蹤文件
- 12. 爲什麼被拒絕的git push不會顯示在'git status'中?
- 13. 刪除git subtree添加git subrepo
- 14. git diff將刪除顯示爲新更改
- 15. Git Diff顯示未刪除的文件(帶「 - 」)
- 16. git標籤:只顯示我的標籤?
- 17. git status與git diff在內部的工作方式有何不同,以顯示未跟蹤的文件?
- 18. git status顯示修改後的文件,但git diff沒有顯示任何內容
- 19. git的標籤刪除並做重新添加
- 20. 'git status'上的Git〜HEAD標記
- 21. `git的status`顯示worktree文件夾
- 22. 在git添加後,文件未顯示在git diff中。我怎麼知道它會被承諾?
- 23. git:爲什麼git diff不顯示任何差異?
- 24. Git狀態不顯示更改,但git diff確實
- 25. git diff僅顯示添加了特定單詞的行
- 26. Git顯示標籤提交是在
- 27. 爲什麼git difftool會使用git diff?
- 28. 如何退出git log或git diff?
- 29. 文件移動與git mv顯示爲刪除/添加
- 30. 在Aptana中爲git添加標籤