github 删除分支_Github新手入门指南
這篇文章是我入門Github時期記錄的筆記,當時主要是參考GitHub入門與實踐 (豆瓣)一書,文中有部分內容也來源于此。
個人感覺比較適合新手入門的,感興趣的朋友可以自行閱讀。
前面的簡介和Github的賬號創建暫且略過,從需要輸入代碼的部分開始:
使用前的準備
創建賬戶(略)
設置頭像(略)
注:以下需要:Windows10操作系統,下載好GitBash;Linux同理。
設置SSH Key
第一個問題出現了,什么是SSH Key呢?我的理解是GitHub通過SSH Key與本地的倉庫相連接,也就是說我們在本地創建SSH Key然后用它連接到GitHub。這樣才能完成從遠端Github下載到本地,從本地上傳到Github的操作。
(先切換到目標文件夾,在目標處右鍵Gitbash here或者命令行cd過去都可以)
打開下載好的GitBash開始輸入:
"email@xxx.com"運行完成后設置一下密碼。
設置完成后系統會告訴你id_rsa和id_rsa.pub的位置以及key的指紋和圖像(Fingerprint, Randomart Image)分別是什么。
其中id_rsa是私有密鑰,id_rsa.pub是**公開密鑰**,GitHub即通過**公開密鑰**認證來連接已有倉庫。
添加公開密鑰
先通過:
$ cat ~/.ssh/id_rsa.pub查看自己的Key,然后在GitHub網頁上找到Add SSH Key的入口,Title處輸入密鑰名稱,Key部分粘貼Key內容即可。(注意:Key不包括郵件,但包括“ssh-rsa”)
完成后會收到提示郵件。
文中提到完成設置之后就可以用私人密鑰與GitHub進行認證和通信了,即運行:
$ ssh -T git@github.com成功的話會出現:
Hi *Your name*! You've successfully authenticated, but GitHub does not provide shell access.基本操作
本地倉庫初始化
這部分是關于本地的Git倉庫的基本操作。
首先打開GitBash,建立一個目錄并初始化倉庫:
$ mkdir git-tutorial #新建文件夾 $ cd git-tutorial #切換到該文件夾目錄 $ git init #初始化倉庫成功后會生成.git目錄,其內存放的便是管理當前目錄內容所需的倉庫數據。稱之為“工作樹”,文件編輯在工作樹中進行,倉庫內是記錄和快照。
創建+初始化倉庫完成后,可以查看其狀態:
$ git status結果會顯示①當前位置(分支)②有無可提交內容;既然是新建的倉庫肯定啥都沒有。
于是建立一個README.md文件進行實驗:
#建立文件 $ touch Learning tracker $ git status #把它添加到暫存區 $ git add Learning tracker $ git status #保存歷史記錄 $ git commit -m "first commit" $ git status這里提到了git commit命令——保存倉庫的歷史記錄,我記得之間用push把本地文件傳到GitHub之前也有git commit命令,之前一直沒搞清楚commit和push都是上傳,為什么要進行兩次呢。現在清楚了,commit提交的是“歷史記錄”,未來可以通過commit命令的記錄復原文件。
關于提交日志
$ it log #顯示以往提交的hash值,提交人和時間。 $ git log --pretty=short #不顯示日期 $ git log Learning tracker #只顯示與指定文件相關的日志 $ git log -p $ git lop -p Learning tracker #只看某文件提交前后的差別查看工作樹、暫存區和最新提交的區別
$ git diff #對比工作區(未add)和暫存區(add之后),如果當前暫存區沒有文件,就比較當前工作區和版本庫(上一次commit之后)的差別 $ git diff HEAD #對比工作區(未add)和暫存區(add但未commit),分別和版本庫(上一次commit之后) $ git diff --cached #對比暫存區(add之后)和版本庫(上一次commit之后)分支的操作
$ git branch #查看所有分支,*為當前所在 $ git checkout -b feature-A #創建名為feature-A的分支并且切換到它 $ git branch feature-A #效果等同 $ git checkout feature-A #效果等同在feature-A分支下對README.md修改,并不會影響master分支下的README.md,這就是Git分支的優點。
$ git checkout - #切換回上一個分支 $ git checkout master #切回master,等同上一條 $ git merge --no-ff feature -A #合并分支A至master $ git log --graph #圖表輸出日志更改提交
處理文件的回溯,推進,以及提交信息錯誤或者是因為出現了簡單的錯誤而不想占用過多歷史空間的情況。
$ git reset --hard hash值 #回復到某hash值的狀態(所有文件) $ git reflog #git log只能以當前狀態為終點查看日志,而這可以看所有歷史 $ git commit --amend #修改提交信息(如之前的first commit)(Vim) $ git rebase -i HEAD~2 #選定當前分支中包含HEAD(最新提交)在內的2個最新歷史記錄為對象,并在編輯器中打開rebase提交后會出現:
pick hashA aaa pick hashB bbb ……若想將bbb的歷史記錄壓縮到aaa里,將第二行的pick改成fixup后保存并關閉編輯器即可。
之后再將aaa分支與master合并,便省去了多合并一次bbb的歷史。
推送至遠程倉庫
之前的操作都是針對本地倉庫在git上進行的,現在開始學習GitHub上的遠程倉庫操作。
添加遠程倉庫
首先在GitHub網站上建立新的倉庫,注意一般不勾選自動建立README.md的選項,防止本地倉庫與遠程倉庫失去“整合性”(當然也可以后期強制覆蓋,先pull一下就可以)。
然后將該倉庫設置成本地倉庫的遠程倉庫:
$ git remote add origin git@github.com:yourname/yourrepositories.git這一步完成后Git會自動將遠程倉庫的名字設置為origin。
推送
$ git pull origin master --allow-unrelated-histories #如果遠程倉庫內有內容,先把他們pull下來和本地同步 $ git push -u origin master #將當前分支內容推送給遠程倉庫的origin的master分支注意此處“-u”參數的作用在于,將origin倉庫的master分支設置為本地當前分支的上游(upstream),這使得未來通過git pull從遠程倉庫獲取內容時本地倉庫的這個分支可以直接從origin-master獲得內容。(只有第一次推送帶參數-u,之后不用再帶)
本地master以外的分支推送也是同理:
$ git checkout -b feature-B #切換到分支B $ git push -u origin feature-B #推送分支B,即將本地的B分支推送到遠程(origin)從遠程倉庫獲取
獲取遠程倉庫
首先切換到其他目錄下,準備將GitHub上的倉庫clone到本地:
$ git clone git@github.com:yourname/yourrepositories.git運行后我出現了:
Enter passphrase for key '/c/Users/Shinelon/.ssh/id_rsa':直接輸入密碼繼續。
(在其他目錄下也要先git init建立倉庫數據,否則這一步會報錯!)
完成后本地倉庫的master分支與遠程倉庫的master分支完全相同。
使用-a參數可以同時查看本地倉庫和遠程倉庫的分支信息:
$ git branch-a獲取遠程某分支
$ git checkout -b feature-X origin/feature-Y以遠程倉庫的分支Y為來源,在本地倉庫中建立X分支。
向遠程分支提交修改
一般情況下,如果要對自己/他人的遠程分支提交修改,可以如下操作:
$ git checkout -b featrueX origin/featureY #從遠程獲取Y分支 $ git diff #在本地對X,即獲取到的Y進行修改 $ git commit -am "xxx" #加入暫存區并提交,=add+commit $ git push #將本地X分支推送到Y獲取最新分支
$ git pull origin featureY將本地的X通過Y更新到最新。
一些自問自答的小問題:
1.在本地建立倉庫直接新建文件夾,然后cd到目錄下git init即可;遠程則是GitHub網頁建立新倉庫。通過git clone命令能夠將origin(遠程)的倉庫直接克隆到本地,而本地到origin的push命令卻只能push某個分支的內容到遠程?
答:確實是這樣,要推送全部分支到origin的話需要使用
$ git push -all origin #這樣即是將本地所有分支都推送到了origin2.練習時創建了大量分支,本地和遠程都有,要如何刪除?
答:
$ git branch -d <BranchName> #刪除了本地的BranchName分支 $ git push origin :<BranchName> #將一個空分支推送至遠程BranchName,效果等同與刪除遠程BranchName $ git push origin --delete <BranchName> #真正的刪除指令3.分支只能在本地之間切換嗎?
答:是這樣,而且研究了一下我發現git branch和git checkout雖然在新建分支并切換的時候效果等同,但實際branch就是一個新建的命令,checkout才是切換至某分支的指令。
更多簡單的指令可以看看這個網址,感覺說的還比較詳細:git push命令 - Git教程?。
4.今天在本地修改文件后同步到GitHub中,直接使用git commit -am '說明'
進行提交,結果出現了一點小bug,部分GitHub中的文件夾丟失了。具體原因還不是很清楚。
答:改用
$ git add . $ git commit -m ' ' $ git push小技巧
1.顯示快捷鍵:
【Shift+/】
2.通過URL直接查看分支間的差別:
①分支4-0-stable和3-2-stable之間的差別:
rails/rails **compare/4-0-stabel...3-2-stable**
②查看master分支在最近7天內的差別:
rails/rails **compare/master@{7.day.ago}...master**
③查看master分支在2013年9月9日與現在的區別
rails/rails **compare/master@{2013-09-09}...master**
Issue的使用
1.給Issue添加標簽/里程碑,以及GFM語法。(略)
2.GFM的獨有功能Tasklist語法:
本日要做的任務:
- [x] 早上8點以前起床
- [x] 看完《怪誕心理學》并還回圖書館
- [ ] 學習時間超過5h
- [ ] 運動至少30min
3.Close Issue:
若一個處于OPEN狀態的Issue處理完畢,可在該提交中以以下任意格式描述提交信息,從而Close該Issue:
fix#24 fixes#24 fixed#24 /fix可以換成close和resolve
Pull Request
1.以.diff或.patch格式獲取Pull Request:
如下輸入即可:
https://github.com/UserName/RepositoryName **/pull/28.diff** 28為Pull Request的編號#28
https://github.com/UserName/RepositoryName **/pull/28.patch**
2.在Conversation引用評論:
選中想要引用的部分,然后按【R】。
3.Files Changed:
該標簽頁可以查看當前Pull Request更改的內容以及前后的差別,但是默認情況下空格的改變也會高亮顯示,不方便,可以在URL末尾添加:
“?w=1”便不再顯示空格的區別。
總結
以上是生活随笔為你收集整理的github 删除分支_Github新手入门指南的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本质矩阵svd分解_SVD推荐系统
- 下一篇: 联想按f2进不了bios设置_华硕笔记本