Git和GitHub的正確開啟姿勢
![7822237-e9cb763d9af8670d.png](https://i.iter01.com/images/a29fba7838098b5f2efb9b137b078c9a511045cbb5a61a5011b0784283fe9f98.png)
起因
都說做攻城獅是需要積累的,果然不錯,積累到一定階段就會發現自己已經弄了很多東西,但是這些東西都很零散不好管理。然後就想,有什麼工具可以幫我管理這些東西呢?這時候,一個以前一直覺得沒用的東西就跳入腦海了:GitHub。
沒錯,GitHub就是用來管理零散的物件的倉庫,而Git則是配套的工具。
Git和GitHub的基本概念
在學習一個新工具的時候,我們首先需要了解關於新工具的一些基本概念。這是非常重要的一個步驟,如果連基本概念都不瞭解,你能用只不過是運氣好而已,遇到一點問題就會不知所措。要解決這些問題最根本的就是要靠這些基本概念,也就是我們平常所說的基礎。那麼,Git和GitHub的基本概念有哪些呢?
Git是什麼?
Git是全球最先進的分散式版本控制系統。重點是版本控制系統,前面的都是噱頭。
那麼什麼是版本控制系統呢?
想象一個這樣的場景:你正在寫一個檔案,名叫遊戲策劃案.docx。寫完之後,給老闆看,結果老闆說要改,你一想,那就改吧,誰讓他是老闆呢。接著,你的遊戲策劃案(改).docx完成了,繼續給老闆過目。
這時候,老闆辦公室正好有其他人在,就一起看了這份文件,其他人自然也想發揮一下他們的聰明才智,就提出了各種各樣的意見,老闆一拍桌子,改!你就回去繼續改你的策劃案了。經過了無數的掙扎和煎熬,你的遊戲策劃案(改改).docx完成了。
然後,你滿懷希望地又走進了老闆辦公室,結果發現老闆辦公室又有人了。他們也對這個策劃有點看法,於是你就又回去修改了,這時候你發現要寫得東西太多,你想讓別人幫忙一起弄,然後拷貝了一份遊戲策劃案(改改)-副本.docx給了他。又經過了一番掙扎,終於把遊戲策劃案(改改改).docx完成了,這時候同事的遊戲策劃案(改改改)-副本.docx也完成了,你就糾結了!怎麼合併這兩份文件呢?
好不容易將文件合併好了,你又滿懷希望地去了老闆辦公室,老闆看了你的策劃案之後,悠悠的說了一句:“還是之前的策劃比較好”。Duang,你就倒地了,上哪去找之前的策劃案啊?
![7822237-803c01c267904699.png](https://i.iter01.com/images/c5e877f2152d2051f5a25ccd336e3185cf18606508f0622362aaa45c80c01992.png)
這個時候,就需要Git出馬了。你可以將所有的修改通過Git提交,儲存每一次修改的副本,這樣你就可以在任何時候獲取到以前改過的版本。更棒的是,它可以讓你同事也受益,你不用再拷貝文件給同事讓他改,而是從Git倉庫中獲取文件,改完之後提交,你使用Git掃一眼就看出有什麼差別,這樣就太省事了。
注意:所有的版本控制系統都只能跟蹤文字檔案的改動,比如txt檔案、網頁、程式程式碼等等,Git也不例外。
GitHub是什麼?
![7822237-c5fb166ed27717b1.png](https://i.iter01.com/images/1b33821bc7e6c40bb360de408e5d2e8243fc3c0cc5599d4e2df887b14e730e91.png)
GitHub是一個倉庫。使用Git總是需要一個儲存這些檔案的地方,這個地方就是倉庫。你可以在本地建立一個倉庫,也可以使用遠端倉庫,GitHub就是一個遠端倉庫。你可以將程式碼或者文件儲存到這個倉庫裡,別人也可以訪問你的倉庫,從你的倉庫中獲取你想要分享的重要內容。同時,其他人修改了倉庫中的內容也可以上傳(當然需要經過你的同意),這樣,你的內容就更完整,更充實了。
Git在Windows上的安裝
因為筆者是在Windows下進行開發,所以只介紹Windows下的安裝方式。其實很簡單,去官網下載安裝程式,然後一路next安裝完成即可。安裝完成後,在某一個目錄下面右擊檢視是否有Git的按鈕,如果有,表示已經安裝成功:
![7822237-fe5332a2db362420.png](https://i.iter01.com/images/cf639b4b48f88de80d510eb18bc845ee19bfb50f44ee3f69a8f45b5bf887d21e.png)
點選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
當看到有如下的輸出的時候,倉庫就初始化好了:
![7822237-3cb5f454683fa9f1.png](https://i.iter01.com/images/f4d7dfb8f28b7c708f4ab315487de96e3391de462009860df7c54115ee51644a.png)
開啟repository資料夾,發現資料夾下面有一個.git的隱藏資料夾:
![7822237-6083fc6bbd407b1f.png](https://i.iter01.com/images/6eb14af2637808cd2feab16685f5a2b03cbe126ea130eee234a74603dbbd9aac.png)
新增檔案與提交修改
在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"這種。說明必須是有意義的,說明本次提交了哪些內容,做了什麼修改,這樣別人不用看你的檔案光看說明就可以知道你做了什麼,便於協作。
![7822237-499f5423f927ef2f.png](https://i.iter01.com/images/156842972d907a9d6849a54bb7c75df46c87a6f3fcd37d8b64a1d3d2470f546d.png)
提醒:每次提交都必須有有意義的說明,否則時間長了就會找不到檔案!!!
狀態檢視
繼續修改檔案,新增一行I use git to control my files.
。這時候,有一個快遞來了,你去收了個快遞,回來之後忘記了這個檔案有沒有提交怎麼辦?哼哼,別急,有方法。在Shell中輸入git status就可以看到了:
![7822237-d0c581fc657198b6.png](https://i.iter01.com/images/36bb103aa5f0fe218d8aefe2620222d26d2cf80749deeec33fb8279df3c94a1c.png)
Git提示,有一個檔案修改了但是沒有提交,修改的檔案是readme.txt。
檔案比較
一個激靈,你忘了修改了什麼東西,於是使用另一個命令來比較檔案:
git diff readme.txt
git就提示了你有什麼東西修改了:
![7822237-16b2446a60908e39.png](https://i.iter01.com/images/c19c4bc8060bd344c1dbae1153409d1a3de80cebb8e73375c3ccd39da8a6ab24.png)
確定無誤之後,你使用
git add
和'git commit'命令上傳了檔案。為了確定上傳成功,你又使用了'git status'命令檢視狀態,發現上傳成功了。
日誌檢視與版本回滾
某天夜裡,你加班到很晚,心裡非常煩躁,咒罵著老闆沒人性,在文件裡寫下了My boss is so stupid
並且提交了。第二天,你清醒了,那個著急啊,寫了老闆壞話還提交了,要是被老闆看到了這不得翻了天嗎。可是你忘了提交的版本號,這可怎麼辦?趕緊查git手冊,所幸發現了一條命令可以檢視日誌,於是你興高采烈的輸入了git log
:
![7822237-02a39bb4f9efbaaf.png](https://i.iter01.com/images/f0b1c774fafc531ead0652ee08ada02f89730265eace0dadfe0461ea0278e6ff.png)
終於抓到了罪魁禍首,就是那個'my boss is stupid'的版本。這下你就放心了,志得意滿的輸入了回滾命令'git reset --hard HEAD^'
![7822237-6b64f5da1e68e2f7.png](https://i.iter01.com/images/e9360c907f5c8026b5a7f3745ef38c1ecff283a6bd371494ca2f2742600a5b3e.png)
Git提示你已經回到了
7123466
版本,你鬆了一大口氣,因為這版本號是上一個版本的版本號。趕緊上傳覆蓋,以免其他人看到。
HEAD^ 表示上一個版本,HEAD^ ^ 表示上上一個版本,HEAD^ ^ ^
嘛,相信你不會想這麼用。我們可以直接用版本號來替代,版本號不用輸完整,只需要前幾位讓Git能準確找到版本就可以了。比如,上面的命令可以換成git reset --hard 7123466
,一樣可以達到目的。
小提示:如果git log出來的日誌太多,你已經查到想要的版本,可以按q鍵退出日誌檢視命令,注意不能用ctrl+c,會無法繼續輸入命令,切記切記!
刪除檔案
時光荏苒,你發現readme檔案沒有用了,這時候你就想將它從倉庫中刪除,於是,你輸入了'git rm readme.txt'命令:
![7822237-e0f74f8f937efd1f.png](https://i.iter01.com/images/fcde2bad55525d064476d17ef8b0fddcd4e980fd9f2559cbc0beb2df19dc7d2c.png)
Git提示,你已經把readme檔案刪掉了,你長長的撥出一口氣,事情總算是完結了。
分支
程式碼管理中,最常用的就是分支功能。在開發版本上打一個分支用於修復BUG,修復之後把分支合併到開發版本中,這幾乎是工作的常態。
要檢視當前的分支狀況,我們需要用到的命令是git branch
。
![7822237-bd35c96dc0ad6b72.png](https://i.iter01.com/images/6c031baf2a4bd6500855ecd3ad95335c486a13c36b4847484baa5361c613b062.png)
可以看到,當前我的版本中有兩個分支,master和test。其中,test顯示為綠色字,並且前面還有一個*號,說明我們當前所操作的就是這個test分支。要切換分支也很容易,使用命令
git checkout 分支名
就可以了:![7822237-3203b66f9a3d6d79.png](https://i.iter01.com/images/08fa23234c7fe9e12e6359a6e10f6116c97fd044355885be1eecc4b2961c8fc0.png)
如果你想建立一個新分支,可以使用git checkout -b 分支名
:
![7822237-6d5cf6f848d46766.png](https://i.iter01.com/images/8df102acc49d3a35e319faee3cb20e2ba64ed9fad884e76da973a9445f5ef834.png)
當你在新分支上的工作完成,想將新分支的內容合併到老分支上時,首先必須要切換到老分支上,然後使用git merge 新分支名
來合併:
![7822237-4f99e564d473feeb.png](https://i.iter01.com/images/fcdf2b99a6e5099fe459e18eb3d81f897115729baa4b72586e8fa03da15c300e.png)
這裡合併沒有什麼問題,非常順利。當然也有不順利的時候,這時候你就要處理衝突了,有時候衝突解決起來是個非常麻煩的事情。所以,最好的方式就是解決完一個問題就合併一次,這樣,在多人協作的時候效率會高點。
末了,新分支也沒啥用了,刪掉吧:
![7822237-1c03bbabdbcfbe8a.png](https://i.iter01.com/images/33f35811a14872582ff5dad49b8229fd05e3fa9e80588814bf885571c85c7198.png)
刪除之前要注意,你不能刪除正在操作的分支。也就是說,如果你想要刪除newtest分支,你必須先切換到別的分支上(例如master),然後再呼叫
git branch -d newtest
來刪除newtest分支。刪除完之後檢查一下,確保分支確實被刪除了。
剩下的是一些隨著時間流逝,慢慢才會用到的命令
命令 | 註釋 |
---|---|
git add . | 新增所有未納入倉庫管理的檔案 |
git checkout . | 丟棄所有修改,將檔案恢復到之前的乾淨狀態 |
git tag | 用於給程式碼打上標籤,標記當前程式碼的狀態是什麼。常見的形式如:git tag -a v0.0 -m "註釋"。表示當前程式碼版本號為0.0,並且可以加上註釋來說明這個版本是做什麼用的(在封板的時候極為有用) |
GitHub的基本操作
首先,到官網去註冊一個賬號,根據它的提示一步步來就可以。
![7822237-c7410ccfefd9a307.png](https://i.iter01.com/images/2d2fa4377debef0cd027feebc6bd5487f9da978e5ef9ad745726c714acb616d1.png)
完成註冊後就登入,在介面上點選右側的“start a project”或者右上角的“+”號選擇“new repository”
![7822237-67b583683f071922.png](https://i.iter01.com/images/bbcc30a9c4ca83623166bc481659386bc5aba09ee4fc26496dbd47bafb7275c4.png)
![7822237-6a9307f29979dc53.png](https://i.iter01.com/images/76174353bbaa83a8159fc7dda4092cf1f9894fc48b2b19e30c4a35a8cdd2efe7.png)
給你的倉庫取一個響亮的名字,比如大名鼎鼎的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按鈕:
![7822237-43a1fe0726d3290e.png](https://i.iter01.com/images/473b7dad3d72652fa7d0f1f85c8c62b4d62d4a09232fa886a1a8c70e0af35f5a.png)
將複製的公鑰拷貝到Key下方的編輯框裡,設定一個合適的Title(比如Company),點選Add SSH key。我們的憑據就設定好了。
從遠端庫中克隆
上一步我們建立了一個Hello World倉庫,怎麼把它down到本地呢,很簡單,使用git clone
命令就可以了。
![7822237-a247a2d83f4bb639.png](https://i.iter01.com/images/da86b81298eb64c75e70d1bd97246d5d52fb6c71c5f4ed4f1cab2459ae44f9e6.png)
clone的路徑可以點選專案中的“Clone and download”按鈕找到:
![7822237-261397db5cd215ec.png](https://i.iter01.com/images/bcf72c5f7f4c37c72debd11565fbfa4041111a67a6fca3db28ab1de718ed07b3.png)
點選圖中框起來的按鈕,你就可以找到SSH路徑了。
down下來之後,你就可以使用上面的命令來操作本地庫了。操作完成後,使用git push
就可以將本地倉庫中的內容推送到GitHub中:
![7822237-2bb08c823b3f72fc.png](https://i.iter01.com/images/d3a26a10093102f36e17ab6e1f1f8013750aa0121b1bcbb332cc257acde42279.png)
如果你網頁上對檔案做了改動,那也沒什麼關係,在對應的目錄中使用'git pull'就可以把最新的檔案down下來了:
![7822237-8ddf3a8392d0d688.png](https://i.iter01.com/images/49381548f6148e1aa92a8f9cca94be751f0844d2a1d9f0c2f2a67672403674af.png)
怎麼樣,是不是非常簡單?對攻城獅來說簡直就是天大的福音,頓時被一股巨大的幸福感包圍!
用命令列不方便?不要緊,我們有圖形介面!
.net Framework 4.7.2 離線安裝包
sourcetree安裝包
安裝完成之後的配置
繞過註冊的方式
https://blog.csdn.net/mjg0101001/article/details/78653994
新增ssa金鑰的方式
![7822237-dccbc415895d79f8.png](https://i.iter01.com/images/6d3cd473de15172576395ed681874dd3f56031c434583b220aa06b272bcb7d88.png)
小結
經過上面的學習,相信你已經可以使用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
- 學習軟體開發的正確姿勢
- 提意見的正確"姿勢"
- 使用快取的正確姿勢快取
- 擼.NET Core的正確姿勢
- laravel 使用 es 的正確姿勢Laravel
- 使用列舉的正確姿勢
- 玩轉 Ceph 的正確姿勢
- 原來,這才是開發者開啟世界讀書日的正確姿勢!
- 原始碼|使用FutureTask的正確姿勢原始碼
- 在vscode使用editorconfig的正確姿勢VSCode
- 虛幻私塾的正確使用姿勢
- MySQL 5.6建索引的正確姿勢MySql索引
- Spring Boot使用AOP的正確姿勢Spring Boot
- 使用 react Context API 的正確姿勢ReactContextAPI
- Swift中使用Contains的正確姿勢SwiftAI
- 學習Linux命令的正確姿勢Linux
- npm run dev 的正確使用姿勢NPMdev
- 解讀mysql的索引和事務的正確姿勢MySql索引
- Java日誌正確使用姿勢Java
- 開發函式計算的正確姿勢 —— 爬蟲函式爬蟲
- 模組開發者使用 ES Modules 的正確姿勢
- Spark streaming消費Kafka的正確姿勢SparkKafka
- 相容iphone x劉海的正確姿勢iPhone
- 實現Flutter彈窗的正確姿勢..Flutter