Git常用命令及日常開發(fā)

前言

本文目的是通過記錄Git的知識點讓自己印象更深刻同時分享給大家。當(dāng)然文中可能會有一些錯誤,也希望大家能指出問題!我也是通過學(xué)習(xí)Git教程后,總結(jié)了git的介紹以及日常開發(fā)中常用的命令和步驟。

一.Git介紹

Git是分布式版本控制系統(tǒng),它相較集中式版本控制系統(tǒng)有什么優(yōu)點?如下圖所示:


集中式版本控制系統(tǒng)

分布式版本控制系統(tǒng)

從上圖可以看出,集中式的版本庫存放在“中央服務(wù)器”,當(dāng)某個人干完活之后推送到版本庫,然后其他人提交時,先更新下來解決沖突后再提交。這其實基本能滿足開發(fā)的需求,但是集中式還有個缺點就是必須聯(lián)網(wǎng)才能工作,并且提交大文件需要一定的時間。分布式就是為了解決如何在沒網(wǎng)的時候開發(fā)?如何能提高開發(fā)效率?使用git開發(fā)時,每個人的電腦都是一個版本庫,所以不用考慮聯(lián)網(wǎng)問題,只有當(dāng)要提交到遠(yuǎn)程版本庫時才需要聯(lián)網(wǎng),并且提交的速度遠(yuǎn)遠(yuǎn)超過其他版本控制系統(tǒng)。當(dāng)然就想圖中看到的一樣,每個人的電腦不用經(jīng)過遠(yuǎn)程版本庫就可以推送給對方(前提是同一局域網(wǎng)),但是這個比較麻煩,通常都是用遠(yuǎn)程版本庫推送的。

這里簡單介紹下Git的工作原理 :


原理圖
  • 工作區(qū):你開發(fā)時新增、修改的文件全部在工作區(qū),如果沒有使用命令之前,它是不會提交到本地版本庫的。
  • 版本庫:版本庫其實是在你那個項目目錄下的一個隱藏文件夾(.git),它里面包括了暫存區(qū)(stage)和默認(rèn)主分支(master)。
  • 暫存區(qū)(stage):當(dāng)工作區(qū)的文件修改后 ,你可以用命令git add提交到暫存區(qū),現(xiàn)在還沒有到master分支上,也就是說你現(xiàn)在的版本庫其實和遠(yuǎn)程版本庫還是一樣的。
  • 主分支(master):暫存區(qū)的內(nèi)容通過git commit提交到主分支,這時候版本庫和遠(yuǎn)程版本庫已經(jīng)不同了。
    當(dāng)然分支是一個非常強(qiáng)大的功能,它可以創(chuàng)建多個分支。分支的作用是:假設(shè)你準(zhǔn)備開發(fā)一個新功能,但是需要兩周才能完成,第一周你寫了50%的代碼,如果立刻提交,由于代碼還沒寫完,不完整的代碼庫會導(dǎo)致別人不能干活了。如果等代碼全部寫完再一次提交,又存在丟失每天進(jìn)度的巨大風(fēng)險。現(xiàn)在有了分支,就不用怕了。你創(chuàng)建了一個屬于你自己的分支,別人看不到,還繼續(xù)在原來的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到開發(fā)完畢后,再一次性合并到原來的分支上,這樣,既安全,又不影響別人工作。

二.Git常用命令

1.提交過程

git status(查看當(dāng)前分支狀態(tài))
git add xxx(提交該文件到暫存區(qū))
git commit -m “xxx”(提交暫存區(qū)的所有內(nèi)容到當(dāng)前分支并注釋)
git pull origin xxx(更新遠(yuǎn)程版本庫到本地)
git push origin xxx(提交到遠(yuǎn)程版本庫)

2.分支命令

git branch(查看所有分支)
git branch <name>(創(chuàng)建分支)
git checkout <name>(切換分支)
git checkout -b <name>(創(chuàng)建+切換分支)
git merge <name>(合并某分支到當(dāng)前分支)
git branch -d <name>(刪除分支)
git log --graph(查看分支合并圖)    

3.版本庫相關(guān)命令

git init(創(chuàng)建本地版本庫)
git remote add origin git@github.com:xxxx/xxx.git(關(guān)聯(lián)本地和遠(yuǎn)程倉庫)
git clone git@github.com: xxxx/xxx.git(克隆遠(yuǎn)程倉庫)
git pull origin xxx(更新遠(yuǎn)程版本庫)
git push origin xxx(提交到遠(yuǎn)程版本庫)
git remote -v(查看遠(yuǎn)程庫信息)

4.工作區(qū)命令

git stash(儲藏工作區(qū))
git stash pop(恢復(fù)工作區(qū))    

5.撤銷修改

git checkout --xxx(丟棄工作區(qū)某文件的修改)
git reset HEAD xxx(丟棄暫存區(qū)某文件的修改)
git reset --hard commit_id(回退到指定的版本號)

6.標(biāo)簽管理

git tag(查看所有標(biāo)簽)
git tag <name>(當(dāng)前HEAD上打標(biāo)簽)
git tag <name> commit_id(某個版本打標(biāo)簽)
git push origin <tagname>(推送標(biāo)簽)
git push origin --tags(推送全部未推送標(biāo)簽)
git tag -d <tagname>(刪除本地標(biāo)簽)

7.查看命令:

git log(--pretty=online)(查看提交日志)
git reflog(查看命令歷史)

8.配置命令(第一次使用Git時)

ssh-keygen -t rsa -C "email@example.com"(如果用戶主目錄下沒有.ssh文件夾則創(chuàng)建sshkey)
git config --global user.name "your name"(配置用戶名)
git config --global user.email "email@example.com"(配置郵箱)

三.日常開發(fā)注意點

  • clone注意點:如果一個項目有兩個分支,clone下來只有master,需要git checkout -b <name> origin/<name>(創(chuàng)建+切換)到另一個分支。

  • 分支使用策略:
    最好不要在master分支上開發(fā),需求如果是開發(fā)新功能則創(chuàng)建feature分支,如果是修改bug則創(chuàng)建bug分支,最后將修改完的分支merge到主分支上進(jìn)行commit。此時有可能出現(xiàn)一種情況:在feature分支上修改時,緊急需要修改bug,而feature還未開發(fā)完,這時無法checkout到master分支(因為工作區(qū)有修改的內(nèi)容),使用git stash儲藏再切換到master上創(chuàng)建新的bug分支。

  • 完整的工作流程:

0.git clone git@github.com: xxxx/xxx.git(克隆遠(yuǎn)程倉庫)
1.git checkout -b feature(當(dāng)前分支是master)
2.在feature分支上修改文件
3.git add <name>(這里不建議用命令行,配合AS使用效果更好)
4.git commit -m “xxx”(提交本地版本庫并注釋)
5.git checkout master-->git merge feature(切換分支并且合并到master分支上)
6.git pull origin master(更新遠(yuǎn)程版本庫并合并)
7.如果有沖突則解決沖突
8.git push origin master

總結(jié)

本篇簡單介紹了git的工作原理、常用命令以及日常開發(fā)的注意點。當(dāng)然實踐是最重要的,其實我自己對git的原理也是大概了解,你只要了解它是怎么工作的,然后通過實踐那些命令以及記錄在開發(fā)的時候遇到的問題,最后把它梳理成操作流程后就可以對git熟練使用了。后續(xù)開發(fā)過程中如果我用到新的命令以及注意事項會持續(xù)更新此文章。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容