我刚开始玩弄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添加标签