Git和GitHub的正確開啟姿勢
起因
都說做攻城獅是需要積累的,果然不錯,積累到一定階段就會發現自己已經弄了很多東西,但是這些東西都很零散不好管理。然後就想,有什麼工具可以幫我管理這些東西呢?這時候,一個以前一直覺得沒用的東西就跳入腦海了:GitHub。
沒錯,GitHub就是用來管理零散的物件的倉庫,而Git則是配套的工具。
Git和GitHub的基本概念
在學習一個新工具的時候,我們首先需要了解關於新工具的一些基本概念。這是非常重要的一個步驟,如果連基本概念都不瞭解,你能用只不過是運氣好而已,遇到一點問題就會不知所措。要解決這些問題最根本的就是要靠這些基本概念,也就是我們平常所說的基礎。那麼,Git和GitHub的基本概念有哪些呢?
Git是什麼?
Git是全球最先進的分散式版本控制系統。重點是版本控制系統,前面的都是噱頭。
那麼什麼是版本控制系統呢?
想象一個這樣的場景:你正在寫一個檔案,名叫遊戲策劃案.docx。寫完之後,給老闆看,結果老闆說要改,你一想,那就改吧,誰讓他是老闆呢。接著,你的遊戲策劃案(改).docx完成了,繼續給老闆過目。
這時候,老闆辦公室正好有其他人在,就一起看了這份文件,其他人自然也想發揮一下他們的聰明才智,就提出了各種各樣的意見,老闆一拍桌子,改!你就回去繼續改你的策劃案了。經過了無數的掙扎和煎熬,你的遊戲策劃案(改改).docx完成了。
然後,你滿懷希望地又走進了老闆辦公室,結果發現老闆辦公室又有人了。他們也對這個策劃有點看法,於是你就又回去修改了,這時候你發現要寫得東西太多,你想讓別人幫忙一起弄,然後拷貝了一份遊戲策劃案(改改)-副本.docx給了他。又經過了一番掙扎,終於把遊戲策劃案(改改改).docx完成了,這時候同事的遊戲策劃案(改改改)-副本.docx也完成了,你就糾結了!怎麼合併這兩份文件呢?
好不容易將文件合併好了,你又滿懷希望地去了老闆辦公室,老闆看了你的策劃案之後,悠悠的說了一句:“還是之前的策劃比較好”。Duang,你就倒地了,上哪去找之前的策劃案啊?
這個時候,就需要Git出馬了。你可以將所有的修改通過Git提交,儲存每一次修改的副本,這樣你就可以在任何時候獲取到以前改過的版本。更棒的是,它可以讓你同事也受益,你不用再拷貝文件給同事讓他改,而是從Git倉庫中獲取文件,改完之後提交,你使用Git掃一眼就看出有什麼差別,這樣就太省事了。
注意:所有的版本控制系統都只能跟蹤文字檔案的改動,比如txt檔案、網頁、程式程式碼等等,Git也不例外。
GitHub是什麼?
GitHub是一個倉庫。使用Git總是需要一個儲存這些檔案的地方,這個地方就是倉庫。你可以在本地建立一個倉庫,也可以使用遠端倉庫,GitHub就是一個遠端倉庫。你可以將程式碼或者文件儲存到這個倉庫裡,別人也可以訪問你的倉庫,從你的倉庫中獲取你想要分享的重要內容。同時,其他人修改了倉庫中的內容也可以上傳(當然需要經過你的同意),這樣,你的內容就更完整,更充實了。
Git在Windows上的安裝
因為筆者是在Windows下進行開發,所以只介紹Windows下的安裝方式。其實很簡單,去官網下載安裝程式,然後一路next安裝完成即可。安裝完成後,在某一個目錄下面右擊檢視是否有Git的按鈕,如果有,表示已經安裝成功:
點選Git Bash Here按鈕,開啟Shell,我們還有最後一步要設定。在命令列下面輸入:
git config --global user.name "Name"
git config --global user.email "email@email.com"
用你的名字和電子郵件地址替換上面的Name和email@email.com。因為Git是分散式版本控制系統,所以每個機器都需要又自己的“門牌號”,name和email就相當於是你機器的門牌號。不用擔心有人故意冒充別人的門牌號,這是有辦法可以查的。
Git的基本操作
設定好後,我們來熟悉一下基本操作。最常用的操作有:
- 初始化倉庫
- 新增檔案
- 提交修改
- 狀態查詢
- 檔案比較
- 日誌檢視
- 版本回滾
- 刪除檔案
初始化倉庫
隨便在哪個目錄下建立一個資料夾,取名為repository,表示倉庫。當然你可以隨便取什麼名字,只要不取中文名就可以(路徑中也不能有中文)。
在repository資料夾下啟動Git命令列,輸入下面的命令:
git init
當看到有如下的輸出的時候,倉庫就初始化好了:
開啟repository資料夾,發現資料夾下面有一個.git的隱藏資料夾:
新增檔案與提交修改
在repository目錄下新建一個readme.txt檔案,輸入兩行文字:
Git is a very useful tool.
GitHub is a very wonderful repository.
我們只需要簡單的兩步就可以將readme.txt檔案納入Git的管轄下。第一步:將檔案新增到倉庫。第二步:提交檔案到倉庫。轉換成Git命令就是:
git add readme.txt
git commit -m "Add readme file"
解釋一下'git commit'命令,-m
引數後面輸入的是本次提交的說明,比如"Add readme file"這種。說明必須是有意義的,說明本次提交了哪些內容,做了什麼修改,這樣別人不用看你的檔案光看說明就可以知道你做了什麼,便於協作。
提醒:每次提交都必須有有意義的說明,否則時間長了就會找不到檔案!!!
狀態檢視
繼續修改檔案,新增一行I use git to control my files.
。這時候,有一個快遞來了,你去收了個快遞,回來之後忘記了這個檔案有沒有提交怎麼辦?哼哼,別急,有方法。在Shell中輸入git status就可以看到了:
Git提示,有一個檔案修改了但是沒有提交,修改的檔案是readme.txt。
檔案比較
一個激靈,你忘了修改了什麼東西,於是使用另一個命令來比較檔案:
git diff readme.txt
git就提示了你有什麼東西修改了:
確定無誤之後,你使用
git add
和'git commit'命令上傳了檔案。為了確定上傳成功,你又使用了'git status'命令檢視狀態,發現上傳成功了。
日誌檢視與版本回滾
某天夜裡,你加班到很晚,心裡非常煩躁,咒罵著老闆沒人性,在文件裡寫下了My boss is so stupid
並且提交了。第二天,你清醒了,那個著急啊,寫了老闆壞話還提交了,要是被老闆看到了這不得翻了天嗎。可是你忘了提交的版本號,這可怎麼辦?趕緊查git手冊,所幸發現了一條命令可以檢視日誌,於是你興高采烈的輸入了git log
:
終於抓到了罪魁禍首,就是那個'my boss is stupid'的版本。這下你就放心了,志得意滿的輸入了回滾命令'git reset --hard HEAD^'
Git提示你已經回到了
7123466
版本,你鬆了一大口氣,因為這版本號是上一個版本的版本號。趕緊上傳覆蓋,以免其他人看到。
HEAD^ 表示上一個版本,HEAD^ ^ 表示上上一個版本,HEAD^ ^ ^
嘛,相信你不會想這麼用。我們可以直接用版本號來替代,版本號不用輸完整,只需要前幾位讓Git能準確找到版本就可以了。比如,上面的命令可以換成git reset --hard 7123466
,一樣可以達到目的。
小提示:如果git log出來的日誌太多,你已經查到想要的版本,可以按q鍵退出日誌檢視命令,注意不能用ctrl+c,會無法繼續輸入命令,切記切記!
刪除檔案
時光荏苒,你發現readme檔案沒有用了,這時候你就想將它從倉庫中刪除,於是,你輸入了'git rm readme.txt'命令:
Git提示,你已經把readme檔案刪掉了,你長長的撥出一口氣,事情總算是完結了。
分支
程式碼管理中,最常用的就是分支功能。在開發版本上打一個分支用於修復BUG,修復之後把分支合併到開發版本中,這幾乎是工作的常態。
要檢視當前的分支狀況,我們需要用到的命令是git branch
。
可以看到,當前我的版本中有兩個分支,master和test。其中,test顯示為綠色字,並且前面還有一個*號,說明我們當前所操作的就是這個test分支。要切換分支也很容易,使用命令
git checkout 分支名
就可以了:如果你想建立一個新分支,可以使用git checkout -b 分支名
:
當你在新分支上的工作完成,想將新分支的內容合併到老分支上時,首先必須要切換到老分支上,然後使用git merge 新分支名
來合併:
這裡合併沒有什麼問題,非常順利。當然也有不順利的時候,這時候你就要處理衝突了,有時候衝突解決起來是個非常麻煩的事情。所以,最好的方式就是解決完一個問題就合併一次,這樣,在多人協作的時候效率會高點。
末了,新分支也沒啥用了,刪掉吧:
刪除之前要注意,你不能刪除正在操作的分支。也就是說,如果你想要刪除newtest分支,你必須先切換到別的分支上(例如master),然後再呼叫
git branch -d newtest
來刪除newtest分支。刪除完之後檢查一下,確保分支確實被刪除了。
剩下的是一些隨著時間流逝,慢慢才會用到的命令
命令 | 註釋 |
---|---|
git add . | 新增所有未納入倉庫管理的檔案 |
git checkout . | 丟棄所有修改,將檔案恢復到之前的乾淨狀態 |
git tag | 用於給程式碼打上標籤,標記當前程式碼的狀態是什麼。常見的形式如:git tag -a v0.0 -m "註釋"。表示當前程式碼版本號為0.0,並且可以加上註釋來說明這個版本是做什麼用的(在封板的時候極為有用) |
GitHub的基本操作
首先,到官網去註冊一個賬號,根據它的提示一步步來就可以。
完成註冊後就登入,在介面上點選右側的“start a project”或者右上角的“+”號選擇“new repository”
給你的倉庫取一個響亮的名字,比如大名鼎鼎的Hello World,填上描述,選擇Public託管方式(事實上你也沒法選Private,因為Private是要保護費的),然後點選左下角的“Create repository”按鈕就成功建立了一個倉庫。
完了,GitHub的準備工作就完成了。
Git與GitHub的互動
為了使本地的Git和遠端的GitHub能相互識別,我們需要讓雙方都儲存一份憑據。
建立憑據(SSH Key)
開啟Git Bash,輸入下面的命令
ssh-keygen -t rsa -C "youremail@example.com"
一路回車,不需要設定其他的東西,完成之後再使用者主目錄裡找到一個.ssh目錄,裡面有id_rsa和id_rsa.pub兩個檔案,這兩個就是憑據(SSH Key),id_rsa裡存放的是私鑰,id_rsa.pub裡存放的是公鑰。開啟id_rsa.pub,複製其中的內容。
設定GitHub賬戶中的SSH Key
點選頭像旁的小下三角按鈕,在彈出的選單中選擇Settings。在左側的Personal settings裡選擇“SSH and GPG keys”。點選SSH keys右側的New SSH key按鈕:
將複製的公鑰拷貝到Key下方的編輯框裡,設定一個合適的Title(比如Company),點選Add SSH key。我們的憑據就設定好了。
從遠端庫中克隆
上一步我們建立了一個Hello World倉庫,怎麼把它down到本地呢,很簡單,使用git clone
命令就可以了。
clone的路徑可以點選專案中的“Clone and download”按鈕找到:
點選圖中框起來的按鈕,你就可以找到SSH路徑了。
down下來之後,你就可以使用上面的命令來操作本地庫了。操作完成後,使用git push
就可以將本地倉庫中的內容推送到GitHub中:
如果你網頁上對檔案做了改動,那也沒什麼關係,在對應的目錄中使用'git pull'就可以把最新的檔案down下來了:
怎麼樣,是不是非常簡單?對攻城獅來說簡直就是天大的福音,頓時被一股巨大的幸福感包圍!
用命令列不方便?不要緊,我們有圖形介面!
.net Framework 4.7.2 離線安裝包
sourcetree安裝包
安裝完成之後的配置
繞過註冊的方式
https://blog.csdn.net/mjg0101001/article/details/78653994
新增ssa金鑰的方式
小結
經過上面的學習,相信你已經可以使用Git和GitHub了。當然,這只是初步的使用,我們學習的目的就是為了使用,所以在文章中沒有涉及到任何複雜的東西(甚至連繞個彎的東西都沒有),只要能開始使用,剩下的一切都好說。
參考資料
相關文章
- 開啟Git的正確姿勢Git
- git commit 的正確姿勢GitMIT
- GIT使用rebase和merge的正確姿勢Git
- Homestead 開啟mongodb正確姿勢MongoDB
- 區塊鏈的正確開啟姿勢區塊鏈
- Git Bash 提交程式碼的正確姿勢Git
- Goland 開啟一個專案的正確姿勢GoLand
- 開啟醫療資料管理新模式的“正確姿勢”模式
- vue多頁面開發和打包的正確姿勢Vue
- TiDB 的正確使用姿勢TiDB
- Redis的正確使用姿勢Redis
- Python開發遊戲的正確姿勢Python開發遊戲
- Postman 正確使用姿勢Postman
- ORACLE RAC開啟歸檔的正確姿勢與ORA-01126Oracle
- 學習軟體開發的正確姿勢
- laravel 使用 es 的正確姿勢Laravel
- 使用列舉的正確姿勢
- 玩轉 Ceph 的正確姿勢
- 提意見的正確"姿勢"
- 使用快取的正確姿勢快取
- 擼.NET Core的正確姿勢
- 原來,這才是開發者開啟世界讀書日的正確姿勢!
- 學習Linux命令的正確姿勢Linux
- Spring Boot使用AOP的正確姿勢Spring Boot
- npm run dev 的正確使用姿勢NPMdev
- 原始碼|使用FutureTask的正確姿勢原始碼
- 使用 react Context API 的正確姿勢ReactContextAPI
- 在vscode使用editorconfig的正確姿勢VSCode
- 虛幻私塾的正確使用姿勢
- MySQL 5.6建索引的正確姿勢MySql索引
- Swift中使用Contains的正確姿勢SwiftAI
- 解讀mysql的索引和事務的正確姿勢MySql索引
- Java日誌正確使用姿勢Java
- 開發函式計算的正確姿勢 —— 爬蟲函式爬蟲
- 模組開發者使用 ES Modules 的正確姿勢
- springboot~國際化Locale正確的姿勢Spring Boot
- Flutter 錯誤捕獲的正確姿勢Flutter
- Pwn掉智慧手錶的正確姿勢