Git学习笔记:标签管理以及GItHub
前言
在補習python的時候主要參考的是廖雪峰的教程Python教程,在學習完后準備完成期末作業時,遇到了一個技術難題,需要初步掌握git,因此開始了git的學習。
本教程參考廖雪峰的Git教程
Git簡介可以參看:Git簡介
Git學習筆記:版本回滾 Git:版本回滾
Git學習筆記:修改Git學習筆記:修改
Git學習筆記: 遠程倉庫Git學習筆記:遠程倉庫
Git學習筆記:分支管理1 Git學習筆記:分支管理1
Git學習筆記:分支管理2Git學習筆記:分支管理2
Git學習筆記:分支管理3Git學習筆記:分支管理3
目錄
- 前言
- 目錄
- 標簽管理
- 創建標簽
- 小結
- 操作標簽
- 小結
- 使用GitHub
- 小結
標簽管理
發布一個版本時,我們通常先在版本庫中打一個標簽(tag),這樣,就唯一確定了打標簽時刻的版本。將來無論什么時候,取某個標簽的版本,就是把那個打標簽的時刻的歷史版本取出來。所以,標簽也是版本庫的一個快照。
Git的標簽雖然是版本庫的快照,但其實它就是指向某個commit的指針(跟分支很像對不對?但是分支可以移動,標簽不能移動),所以,創建和刪除標簽都是瞬間完成的。
Git有commit,為什么還要引入tag?
“請把上周一的那個版本打包發布,commit號是6a5819e…”
“一串亂七八糟的數字不好找!”
如果換一個辦法:
“請把上周一的那個版本打包發布,版本號是v1.2”
“好的,按照tag v1.2查找commit就行!”
所以,tag就是一個讓人容易記住的有意義的名字,它跟某個commit綁在一起。
創建標簽
在Git中打標簽非常簡單,首先,切換到需要打標簽的分支上:
$ git branch * devmaster $ git checkout master Switched to branch 'master'然后,敲命令git tag 就可以打一個新標簽:
$ git tag v1.0可以用命令git tag查看所有標簽:
$ git tag v1.0默認標簽是打在最新提交的commit上的。有時候,如果忘了打標簽,比如,現在已經是周五了,但應該在周一打的標簽沒有打,怎么辦?
方法是找到歷史提交的commit id,然后打上就可以了:
$ git log --pretty=oneline --abbrev-commit 1c912f4 (HEAD -> dev2, tag: v1.0) conflict fixed c03f3da AND simple 2f95c81 a test 4cc972a branch test 047ca83 like master real c91cc58 like master cd104fe remove test.txt 320840f add test.txt e42d7e7 git track changes fcb9ba4 a minitest for understanding the work 276b2df append GPL 18323a9 add distributed ebcf5a3 wrote a readme file比如說要對like master這次提交打標簽,它對應的commit id是c91cc58,敲入命令:
$ git tag v0.9 f52c633再用命令git tag查看標簽:
$ git tag v0.9 v1.0注意,標簽不是按時間順序列出,而是按字母排序的。可以用git show 查看標簽信息:
$ git show v0.9 commit c91cc583b53d69780eb857181bf3d6a03e078b23 (tag: v0.9) Author: challengef <lifuquan16@nudt.edu.cn> Date: Thu Jun 28 14:25:28 2018 +0800like masterdiff --git a/test.txt b/test.txt new file mode 100644 index 0000000..e69de29以看到,v0.9確實打在like master這次提交上。
還可以創建帶有說明的標簽,用-a指定標簽名,-m指定說明文字:
用命令git show 可以看到說明文字:
$ git show v0.1 tag v0.1 Tagger: challengef <lifuquan16@nudt.edu.cn> Date: Wed Jul 4 16:55:19 2018 +0800version 0.1 releasedcommit 276b2dfad247898dc00c12758659ddd253e0c148 (tag: v0.1) Author: challengef <lifuquan16@nudt.edu.cn> Date: Tue Jun 26 21:05:22 2018 +0800append GPLdiff --git a/readme.txt b/readme.txt index ee2c1ea..eda332d 100644 --- a/readme.txt +++ b/readme.txt @@ -1,2 +1,2 @@Git is a distributed version control system. -Git is free software \ No newline at end of file +Git is free software distributed under GPL ...注意:標簽總是和某個commit掛鉤。如果這個commit既出現在master分支,又出現在dev分支,那么在這兩個分支上都可以看到這個標簽。
小結
- 命令git tag 用于新建一個標簽,默認為HEAD,也可以指定一個commit id;
- 命令git tag -a -m “blablabla…”可以指定標簽信息;
- 命令git tag可以查看所有標簽。
操作標簽
如果標簽打錯了,也可以刪除:
$ git tag -d v0.1 Deleted tag 'v0.1' (was f15b0dd)因為創建的標簽都只存儲在本地,不會自動推送到遠程。所以,打錯的標簽可以在本地安全刪除。
如果要推送某個標簽到遠程,使用命令git push origin :
$ git push origin v1.0 Counting objects: 12, done. Delta compression using up to 8 threads. Compressing objects: 100% (12/12), done. Writing objects: 100% (12/12), 1.35 KiB | 345.00 KiB/s, done. Total 12 (delta 3), reused 0 (delta 0) remote: Resolving deltas: 100% (3/3), done. To https://github.com/challengef/awesome-python3-webapp2.git* [new tag] v1.0 -> v1.0或者,一次性推送全部尚未推送到遠程的本地標簽:
$ git push origin --tags Total 0 (delta 0), reused 0 (delta 0) To github.com:michaelliao/learngit.git* [new tag] v0.9 -> v0.9如果標簽已經推送到遠程,要刪除遠程標簽就麻煩一點,先從本地刪除:
$ git tag -d v0.9 Deleted tag 'v0.9' (was f52c633)然后,從遠程刪除。刪除命令也是push,但是格式如下:
$ git push origin :refs/tags/v0.9 git push origin :refs/tags/v0.9 remote: warning: Deleting a non-existent ref. To https://github.com/challengef/awesome-python3-webapp2.git- [deleted] v0.9要看看是否真的從遠程庫刪除了標簽,可以登陸GitHub查看。
小結
? 命令git push origin 可以推送一個本地標簽;
? 命令git push origin –tags可以推送全部未推送過的本地標簽;
? 命令git tag -d 可以刪除一個本地標簽;
? 命令git push origin :refs/tags/可以刪除一個遠程標簽。
使用GitHub
我們一直用GitHub作為免費的遠程倉庫,如果是個人的開源項目,放到GitHub上是完全沒有問題的。其實GitHub還是一個開源協作社區,通過GitHub,既可以讓別人參與你的開源項目,也可以參與別人的開源項目。
在GitHub出現以前,開源項目開源容易,但讓廣大人民群眾參與進來比較困難,因為要參與,就要提交代碼,而給每個想提交代碼的群眾都開一個賬號那是不現實的,因此,群眾也僅限于報個bug,即使能改掉bug,也只能把diff文件用郵件發過去,很不方便。
但是在GitHub上,利用Git極其強大的克隆和分支功能,廣大人民群眾真正可以第一次自由參與各種開源項目了。
如何參與一個開源項目呢?比如人氣極高的bootstrap項目,這是一個非常強大的CSS框架,你可以訪問它的項目主頁https://github.com/twbs/bootstrap,點“Fork”就在自己的賬號下克隆了一個bootstrap倉庫,然后,從自己的賬號下clone:
git clone git@github.com:michaelliao/bootstrap.git
一定要從自己的賬號下clone倉庫,這樣你才能推送修改。如果從bootstrap的作者的倉庫地址git@github.com:twbs/bootstrap.git克隆,因為沒有權限,你將不能推送修改。
Bootstrap的官方倉庫twbs/bootstrap、你在GitHub上克隆的倉庫my/bootstrap,以及你自己克隆到本地電腦的倉庫,他們的關系就像下圖顯示的那樣:
如果你想修復bootstrap的一個bug,或者新增一個功能,立刻就可以開始干活,干完后,往自己的倉庫推送。
如果你希望bootstrap的官方庫能接受你的修改,你就可以在GitHub上發起一個pull request。當然,對方是否接受你的pull request就不一定了。
如果你沒能力修改bootstrap,但又想要試一把pull request,那就Fork一下我的倉庫:https://github.com/michaelliao/learngit,創建一個your-github-id.txt的文本文件,寫點自己學習Git的心得,然后推送一個pull request給我,我會視心情而定是否接受。
小結
?在GitHub上,可以任意Fork開源倉庫;
?自己擁有Fork后的倉庫的讀寫權限;
?可以推送pull request給官方倉庫來貢獻代碼
總結
以上是生活随笔為你收集整理的Git学习笔记:标签管理以及GItHub的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bcdedit添加linux引导,Lin
- 下一篇: oracle pdb还原为no-cdb,