顯示具有 Git邊學邊記錄 標籤的文章。 顯示所有文章
顯示具有 Git邊學邊記錄 標籤的文章。 顯示所有文章

2017年5月23日 星期二

Git邊學邊記錄-團隊協作git pull

團隊協作的時候,要能夠時時刻刻取得最新的資料,就需要透過git pull來處理。
git pull

這時候的關係如下圖:
git pull
A下了commit,並且push到github之後,b要透過git pull去取得目前在github上最新資訊!

當然會有一種情況,就是B沒注意到A已經第二次的push到github上,而要直接再做push,如下圖所示:
git pull
這時候會被github拒絕,B還是必需做一次git pull然後merge後,才有辦法再重新push上去。

Git邊學邊記錄-推送分支到github

正常說,要把資料推到遠端主機,只要透過git push就可以,但是,那是在master的情況下才會直接下指令沒有問題!
git push

但是當切換到分支的時候,要將分支push會發現出現錯誤訊息!
git push

因為還要去指定到遠端數據庫的名稱才行!
所以我們就可以先使用git remote來做查詢。
git remote
查詢後會取得origin這遠端數據庫名稱!

接著就可以使用git push 遠端數據庫名稱 分支名稱來做推送
git remote

當然還可以透過git remote rename 原始數據庫名稱 新數據庫名稱來做改名
git remote

2017年5月22日 星期一

Git邊學邊記錄-暫存資料git stash

暫存資料 git stash

當作業到一半的時候被臨時叫去支援其他事情,又不能把手邊寫一半的東西commit的話,就可以透過git stash來做暫存。

如下圖所示,一個文字檔編輯一半毎叫走。
git stash

所以透過 git stash去暫存,這時候開啟檔案會發現,稍早所編輯的部份資料消失了?
git stash

接著利用git status查詢目前狀況,會發現,沒有任何異動檔案。
git status

確認一下,執行git stash list來查目前的暫存資料狀況

git stash list
會發現有一個stash{0}的資料暫存!

此時透過git stash pop就可以將暫存資料還原
git stash pop

如果不想留下暫存資料的時候可以執行兩個指令:
git stash drop 刪除最新的暫存資料
git stash clear 所有暫存資料全刪除

Git邊學邊記錄-標籤git tag

標籤 git tag

git本身提供了commit說明之外的另一個維度,『標籤』。
透過git tag可以替版本建立標籤說明,讓設計師更方便去記錄狀態!

git tag
因為都還沒有設置標籤,所以執行git tag之後,是什麼都沒有的狀態。

所以我們透過指令 git tag tagname來做設置
git tag
這時候會發現,出現了『v1』的資訊了!

如果需求切換到該版本的commit的話,那就可以直接透過git checkout tagname來切換
git tag

git tag
兩圖說明了切換版本的差異,v2的版本是有b.txt,v1則沒有。

如果對tag有說明的需求,可以透過git tag -am "說明" tagname來設置,再透過git tag -n來查詢。
git tag

如果想刪除掉tag的話,也可以透過 git tag -d tagname來處理,本身刪除tag不會影響到commit的資訊,這部份可用性較大。

Git邊學邊記錄-合併分支merge

合併分支git merge

在透過git branch建置分支之後,如果需要將版本再合併回來的時候,就可以執行git merge來做分支的合併。

git checkout在另篇文章中,我建置了一個『gbranch1』 的分支,修改之後,我要合併。
首先,我會先調整指向『master』

git checkout master

接著,再執行git merge gbranch1
git merge

這樣子,就把分支跟主支的資料合併起來了!
此時的狀態是這樣的:
git merge

Git邊學邊記錄-建置分支branch

建置分支 git branch

建置分支主要是用於專案上,如果已完成的功能不想因為在debug的期間造成使用者受影響所做的動作!

透過git branch可以看到,最開始只有一個『* master』,那是因為沒有建置分支,所以只有一個主支流。
『*』代表目前所在支流處
git branch

接著,我們透過git branch 分支名稱 來建置一個分支
git branch
這時候再執行git branch會發現,多了一個剛才所建立的gbranch1了,但是『*』還是在master

我們可以透過git checkout 分支名稱來做切換
git checkout
這時候再執行git branch查看!
git branch
此時的『*』已經移至『gbranch1』了!

這時候的狀態是這樣:
git branch
然後,當我們在分支的時候執行commit,就會變成這樣:
git branch
這是建構在master此時狀態下的分支,所以如果想回頭去看master當初的版本狀況,可以透過git checkout master來切換確認,待分支改版完成之後,再透過合併支流的方式來做整合即可。


Git邊學邊記錄-HEAD-查詢過去的記錄

master所指為目前的主要支流,HEAD可看成目前的索引值所在
git head
每執行一個commit,HEAD就會再向上爬一格,不斷堆疊上去!
這時候,如果有需求回頭看前版的狀態的話,就可以透過git checkout 節點辨視碼前四碼來將HEAD指向該版本。

透過git log查詢節點辨視碼(白框所示)
git log HEAD

從這可以看到前四碼為『bc10』,且為『master』
執行git checkout bc10
git checkout

這時候會發現不再是『master』,而是節點辨視碼了,此時的HEAD已調至該commit版本處。
git head
這時候去開啟該檔案,已是當初commit的版本狀態了!
要再調整回來的時候,只雩要再執行git checkout master即可。
git checkout master








Git邊學邊記錄-建置gitHub遠端目錄

git New repository

註冊一個git帳號,如果是free的話,所開的遠端目錄都會是Public的,如果要Private的話,就必需是付費帳號。
所以如果是企業內部的開發網站的話,就建議付費,每月7美元。

遠端目錄的建置如下三圖,最後的網址部份是做git Clone的時候需要用到的。
git hub

git hub

git hub

Git邊學邊記錄-遠端目錄操作

從github 取得資料,git clone

在github上建置一個遠端目錄之後,可在本地端建置一個目錄,並且執行git clone 網址,即可以取得該位址上的資料。
git clone

執行之後的warning是因為該資料夾為空,不過這是當然的,因為我們是新建的。

將資料丟到遠端目錄,git push

執行git push的時候,如果沒有設置的話會跳框要求輸入帳密確認身份。
git push
 git push
確認身份之後就會正常的把檔案丟到遠端目錄去了。







2017年5月15日 星期一

Git邊學邊記錄-切換資料夾的方式

git切換資料夾的方式

  • 透過指令cd
  • 直接拖拉資料夾進git bash

  • 在資料夾上按右鍵
git

Git邊學邊記錄-本地端基礎操作

設置git user.name與user.email

git config --global user.email "mail address"
git config --global user.name "your name"

git user

設置之後再以git config --list確認是否設置成功。

對資料夾設置git


切換目錄至該資料夾之後執行git init
git init

執行之後會發現多了一個(master)的字樣,就代表成功了。

加入索引git add .  確認狀態git status


git status add

Untracked files即表示未加入索引(未執行git add)
這時候可以再執行git add b.txt來將b.txt也加入索引

寫入本地數據庫git commit -m '說明'

git commit

執行之後會看到建立訊息『create mode 100644 .....』

接著利用git status確認會顯示『nothing to commit ...』,因為我們已經執行commit了!
但是調整檔案之後再執行git status之後,會發現,有不一樣的訊息出現。


透過git log查詢記錄


git log

建置.gitignore來設置忽略名單

touch .gitignore
.gitignore

這時候可以先透過git status看狀態,會發現有兩個檔案未做add索引
git status

透過vi編輯器將c.txt加入清單之後再執行git status
.gitignore

此時會發現,剩一個檔案了,c.txt被排除了。
如果要將某個副檔名的一次性的排除,也可以透過『*.txt』來處理。
如果要針對某個資料夾做排除,也可以透過『js\』即代表js這資料夾內所有資料皆被排除
連結為git提供針對排除檔案的設置
.gitignore

狀態還原git reset HEAD 檔名

不加檔名的話,就是全部待commit的全部還原

git reset

資料還原 git checkout

git checkout

還原工作目錄與索引git reset --hard

執行之後會不論是否已git add與否,通通還原至最後一版commit狀態