My blogs

The greatest test of courage on earth is to bear defeat without losing heart.

0%

git-control

介紹

Git 語法筆記,幫自己複習。

Git 介紹

Git 可以把檔案的狀態作為更新歷史記錄保存起來。因此可以把編輯過的檔案復原到以前的狀態,也可以顯示編輯過內容的差異。

數據庫 (Repository)記錄檔案或目錄狀態的地方,儲存內容的修改歷史記錄。在數據庫的管理下除了儲存修改歷史記錄外,還可以追蹤內容的狀態和版本喔。


Git 安裝

Git 官方

選擇自己相對作業系統下載。

安裝完成之後再 git 目錄下找到git bash

1
2
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

ssh方式連接。

ssh-keygen生成一個金鑰,產生.ssh檔包含下圖兩個檔案。

ph

選取.pub 檔案此檔為公鑰,打開Github進入 personal settings => SSH and GPG keys

ph

New SSH keys 新增 把.pub的金鑰複製上去。


Git 操作流程

作者以windows系統。

Git 步驟

    1. 打開CMD,快速鍵 Win+R
    1. 建立資料夾 mkdir foldername
    1. 切換到建立資料夾底下 cd foldername

ph

    1. 初始git init
    1. 建立文字檔cd .>a.txt
    1. git status查看git狀態,如下圖。
      ph
    1. git add a.txtgit status查看,如下圖。
      ph
      提示: git add . 把檔案一次添加進去。
    1. echo 789>>a.txt新增內容在文字檔需再次git add a.txt
    1. git commit -m "first commit" push 上去的文字標記,-m不啟用文字編輯器。
    1. github建立Repository,如下圖。
      ph
    1. git branch -M master建立 branch 名稱 master
    1. git remote add origin https://github.com/tady0725/gitdemo.git,連接到Repositoryorigin為倉儲節點名稱。
    1. git push -u origin master把檔案推至倉儲,-u 設定 upstream ,在 Git 裡面每一個分支可以設定一個「上游」,完成如下圖。
      ph

Git 其他指令

git checkout更改branchcommit
git log查看狀態commit,訊息包含作者名稱時間。
git log --oneline簡短查看狀態commit,訊息包含作者名稱時間。
git diff版本控制專案找出差異。
git merge合併版本。
git pull拉下Repository最新進度。
git reset -- file_name 把 add 修改,也就是 staged 狀態改變。
git reset --soft HEAD~1 # 數字表示移動到 HEAD 後面第幾個


git Merge 使用

當一個專案,A,B,C 三位同步進行開發,Repositorymaster中內容僅有基底(例如首頁),不過
專案同步在進行中,A 負責一個功能,BC 同上,這樣就會有三種功能,不過此時 A,B,C 都僅是發展在自己線路上,最後要合在branch master也就是主線上,A,B,C 都master的分支,當各自完成最後再結合到主線

1
2
3
4
5
6
7
git merge branch_name
/*查看git log有新增commit出來*/
git log
/*此時合併的branch commit的資料會出現 master上*/

git push origin master
/*再次push 更新上去 Repository*/

git conflicts(衝突)

當一個專案,A,B 兩位進行開發,當 A 去修改首頁檔(index.html),但 B 不知道也去修改首頁檔,
A 先修改完,進行commit上去,此時沒問題,B 在本地端進行也並不知道 A 已經進行修改(所以 B 用git log查看並不會發現因為未更新),B 修改後也進行commit,問題就來了產生conflicts,A 抓下來時假設commit 穩定版,A 修改完最新commit 277 行 bug 修正,B 抓下來時看到commit 穩定版,B 修改完最新commit 300 行 bug 修正,目前commit應該為(新到舊)300 行 bug 修正 => 277 行 bug 修正 => 穩定版 ,在 B 未更新所以看commit是舊的這造成commit錯亂就是conflicts,此時需手動修整,確認更新檔案內容。

1
2
3
4
5
6
7
8
9
10
11
12
13
/*操作者為B*/
/*B commit 訊息產生錯誤發生衝突*/
git pull
/*更新抓下Repository 最新資訊 */
/* 可使用vscode 比較容易修改*/
git log
/*修改完確認*/
git add .
git commit-m "以解決conflicts"
git push

git push origin master
/*再次push 更新上去 Repository*/

參考網站


如果您喜歡我的文章,請幫我按五下 ,感謝大家。