mysql使用group by查詢報錯SELECT list is not in GROUP BY clause and contains nonaggregated column...原因及解決方案
Git是什麼?
-
Git是一個開源的分散式版本控制系統。
1、什麼是版本控制?
字面意思,控制版本,儲存、追蹤目錄和檔案的修改歷史。市面上有各式各樣的版本控制工具,比較常用的SVN、Git等等。
2、什麼叫“分散式”版本控制?
(1)集中式:版本庫存放在中央伺服器
(2)分散式:沒有中央伺服器,版本庫存在每個人自己的計算機上
Git幹嘛的?
可以有效、高速地處理從很小到非常大的專案版本管理。
也是Linus Torvalds為了幫助管理Linux核心開發而開發的一個開放原始碼的版本控制軟體。
Torvalds 開始著手開發 Git 是為了作為一種過渡方案來替代 BitKeeper
Git
一.版本控制分類
記錄檔案每次的更新,可以對每一個版本做一個快照,或是記錄補丁檔案,適合個人用,如RCS
所有的版本資料都儲存在伺服器上,協同開發這從伺服器上同步更新或上傳自己的修改.
)
缺點:每個人都擁有全部程式碼,安全隱患.
所有版本資訊倉庫全部同步到本地的每個使用者,這樣就可以在本地檢視所有版本歷史,
可以離線在本地提交,只需要在聯網時push到相應的伺服器或其他使用者那裡.由於每個
使用者那裡儲存的都是所有的版本資料,只要有一個使用者的折本沒有問題就可以恢復所
有的資料,但這增加了本地儲存空間的佔用.不會因為伺服器損壞或者網路問題,造成
不能工作的情況;
Git和SVN主要區別
SVN是集中式版本控制系統,版本庫是集中放在中央伺服器的,而工作的時候,
用的都是自己的電腦,所有首先要從中央伺服器得到最新的版本,然後工作,完
成工作後,需要把自己做完的活推送到中央伺服器.集中式版本控制系統是必
須聯網才能工作,對網路頻寬要求較高.
)
Git是分散式版本控制系統,沒有中央伺服器,每個人的電腦就是
一個完整的版本庫,工作的時候不需要聯網了,因為版本都在自己
電腦上.系統的方法是這樣的:比如說自己在電腦上改了檔案A,其
他人也在電腦上改了檔案A,這是,你們兩之間只需把各自的修改
推送給對方,就可以互相看到對方的修改了.Git可以直接看到更
新了哪些程式碼和檔案!
? Git是目前世界上最先進的分散式版本控制系統
二.聊聊Git歷史
三.Linux常用命令
-
cd: 改變目錄
-
cd.. 回退到上一個目錄,直接cd進入預設目錄
-
pwd:顯示當前所在的目錄路徑
-
Is(II):都是列出當前目錄中的所有檔案,只不過II列出的內容更為詳細
-
touch:新建一個檔案如touch index.js就會在當前目錄下新建一個index.js檔案
-
rm:刪除一個檔案,rm index.js就會把index.js檔案刪除
-
mkdir:新建一個目錄,就是新建一個資料夾
-
rm -r:刪除一個資料夾,rm -r src 刪除src目錄
-
mv:移動檔案,(mv index.html src) index.html是我們要移動的檔案,src是目標資料夾
-
reset:重新初始化終端/清屏
-
clear:清屏(常用)
-
history:檢視命令歷史
-
help:幫助
-
exit:退出
-
#:表示註釋
四.Git配置
設定使用者名稱與郵箱(使用者標識,必要)
git config --global user.name "ljx" #名稱
git config --global user.email [email protected] #郵箱
只需要做一次這個設定,如果你傳遞了--global選項,因為Git將總是會使用該資訊來處理你在系統中所做的一切操作。如果你希望在一個特定的專案中使用不同的名稱或e-mail地址,你可以在該專案中執行該命令而不要--global選項。總之--global為全域性配置,不加為某個專案的特定配置。
檢視名稱/郵箱....列表
git config --global --list
五.Git的基本理論(核心)
工作區域
Git本地有三個工作區域:工作目錄(Working Firectory) , 暫存區(Stage/Index) ,
資源庫(Repository或Git Directory).如果在加上遠端的git倉庫(Remote Directory)
就可以分為四個工作區域.檔案在這四個區域之間的轉換關係如下:
-
Workspace : 工作區,就是你平時存放專案程式碼的地方
-
Index/Stage : 暫存區,用於臨時存放你的改動,事實上他只是一個檔案,儲存即將提交到檔案列表資訊
-
Repository : 倉庫區(或本地倉庫) , 就是安全存放資料的位置,這裡面有你提交到所有版本的資料.其中HEAD指向最新放入倉庫的版本.
-
Remote : 遠端倉庫,託管底阿媽的伺服器,可以簡單的認為是你專案組中的一臺電腦用於遠端資料交換.
本地的三個區域確切的說應該是git倉庫中HEAD指向的版本:
工作流程
git的工作流程一般是這樣的:
-
在工作目錄中新增,修改檔案; (需要儲存的程式碼 userMapper)
-
將需要進行版本管理的檔案放入暫存區;(git add)
-
將暫存區的檔案提交到git倉庫.(git commit)
因此,git管理的檔案有三種狀態: 已修改(modified),已暫存(staged),已提交(committed)
六.Git專案搭建
建立工作目錄與常用指令
本地倉庫搭建
建立本地倉庫的方法有兩種: 一種是建立全新的倉庫,兩一種是克隆遠端倉庫.
1.建立全新的倉庫,需要用GIT管理的專案的根目錄執行:
#在當前目錄新建一個Git程式碼庫
$ git init
2.執行後可以看到,僅僅在專案目錄多出了一個.git目錄,關於版本等的所有資訊都在這個目錄裡面.
克隆遠端倉庫
1.另一種方式是克隆遠端目錄,是將遠端伺服器刪的倉庫完全映象一份至本地!
#克隆一個專案和他的整個程式碼歷史(版本資訊)
$ git clone [url] #git 克隆的地址
2.去gitee或者github上克隆一個測試!
七.GIT檔案操作
檔案4種狀態
版本控制就是對檔案的版本控制,要對檔案進行修改、提交等操作,首先要知道檔案當前在什麼狀態,不然可能會提交了現在還不想提交的檔案,或者要提交的檔案沒提交上。 Untracked:未跟蹤,此檔案在資料夾中,但並沒有加入到git庫,不參與版本控制.通過 git add狀態變為 Staged Unmodify : 檔案已經入庫,來修改,即版本庫中的檔案快照內容與資料夾中完全一致這種型別的檔案有兩種去處,如果它被修改,而變為 Modified 如果使用gitr移出版本庫,則成為Untracked檔案
Modified:檔案已修改僅僅是修改,並沒有進行其他的操作這個檔案也有兩個去處,通過 git add 可進入暫存staged狀態使用 git checkout 則丟棄修改過,返回到 unmodify 狀態,這個git checkout 即從庫中取出檔案,覆蓋當前修改!
Staged:暫存狀態.執行git commit則格修改同步到庫中,這時庫中的檔案和本地檔案又變為一致,檔案為 Unmodify狀態執行git reset HEAD filename 取消行存檔案狀態為Modified
檢視檔案狀態
上面說的檔案有四種轉態,通過如下命令可以檢視到檔案的狀態:
# 檢視指定檔案狀態
git status [filename]
# 檢視所有檔案狀態
git status
# git add . 新增所有檔案到暫存區
# git commit -m "訊息內容" 提交暫存區中的內容到本地倉庫 -m 提交資訊
忽略檔案
有些時候我們不想把某些檔案納入版本控制中,比如資料庫檔案,臨時檔案,設計檔案等 在主目錄下建立"gitignore"檔案,此檔案有如下規則: 1.忽略檔案中的空行或以井號(#)開始的行將會被忽略。 2.可以使用inux萬用字元,例如星號(*)代表任意多個字元,問號(?)代表一個字元,方括號([abc])代表可選字元範圍大括號({string1string2..})代表可選的字串等。 3.如果名稱的最前面有一個感嘆號(!),表示例外規則,將不被忽略。 4.如果名稱的最前面是一個路徑分隔符(/),表示要忽略的檔案在此目錄下,而子目錄中的檔案不忽略。 5.如果名稱的最後面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非檔案(預設檔案或目錄都忽略)。
八.使用碼雲
1.註冊登入碼雲,完善個人資訊
2.設定本機繫結SSH公鑰,實現免密碼登入!
# 進入C:\users\Administrator\.ssh 目錄
# 生成公鑰
ssh-keygen -t rsa
3.將公鑰資訊public Key 新增到碼雲賬戶中即可!
4.使用碼雲建立一個自己的倉庫!
建立成功
git clone [url] 克隆到本地
九.IDEA中整合Git
1.建一個普通的SpringBoot專案
專案的資料夾就是git的資料夾
2.將git工程中的資料夾直接拷貝到java資料夾中
-
觀察idea的變化
-
剛才是紅的
-
1.)git commit
-
2.)git commit -m “訊息”
-
git push
-
檢視遠端倉庫已經提交上去了
這些是單個人操作
十.說明:GIT分支
git分支常用命令
#列出所有本地分支
git branch
# 列出所有遠端分支
git branch -r
#新建一個分支,但依然停留在當前分支
git branch [branch-name]
#新建一個分支,並切換到該分支
git checkout -b [branch]
#合併指定分支到當前分支
git merge [branch]
# 刪除分支
$ git branch -d [branch-name]
# 刪除遠端分支
$ git push origin --delete [branch-name]$ git branch -dr [remote/branch]
分支(多人開發)
如果衝突了就需要協商了
如果同一個檔案在合併分支時都修改了則會引起衝突:解決
的辦法是我們可以修改衝突檔案後重新提交!選擇要保留他的程式碼還是你的程式碼!
master主分支應該非常穩定,用來發布新版本,一般情況下不允
許在上面工作,工作一般情況下在新建的dev分支上工作,工作
完後,比如上要釋出,或者說dev分支程式碼穩定後可以合併到主
分支master上來.