iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0
Mobile Development

從零開始的IOS開發日常系列 第 11

[鐵人賽 Day 11] Git ( MAC ) 初入門-2

  • 分享至 

  • xImage
  •  

開始使用

必須先設定完名稱與email才能正式開始使用Git的各項功能。基本上設定一次就可以了。

git config --global user.name gary3123
git config --global user.email ban103123@gmail.com

設定完成之後可以在本地端先開一個作業用資料夾,並初始化。

gary@aweideMacBook-Pro ~ % mkdir git_practise
gary@aweideMacBook-Pro ~ % cd git_practise 
gary@aweideMacBook-Pro git_practise % git init

在這個資料夾就可以進行程式的版本控管了。
可以在這邊新增一個程式檔案

#將指定檔案(或資料夾)加入版本控制(Staging Area and Tracked)。用.可加入(刪除)全部
git add <files or folders>

#可以確認本地端檔案的資料及狀態
git status

新增完之後輸入git status 會出現這個資料夾的所有程式檔案,剛剛新增的資料就會是Staged的狀態。(如下圖)

如果將檔案修改的話,他就會是modified的狀態

每一次修改檔案的時候記得要add進Staging裡

#將更改的檔案新增到暫存
git add "<file>"

再來就可以將檔案提交到本地的倉庫

#提交目前的異動並設定摘要說明
git commit -m "<message>"

Git本地常用指令

指令 說明
git config --list 列出本地 git 相關設定
git config --global user.name 設定(全域的)名稱
git config --global user.email 設定(全域的)email
git init 初始化。建立本地端 Repository
git clone <endpoint_url> 複製遠端的 Repository 檔案到本地端
rm -rf .git 刪除本地端 Repository
git status 檢查本地端檔案異動狀態
git add 將指定檔案(或資料夾)加入版本控制(Staging Area and Tracked)。用.可加入(刪除)全部
git rm --cached 將指定的檔案移除追蹤
git restore 從 Staging Area 中復原 Working Directory 中的檔案
git restore --staged 從 倉庫中復原 Staging Area 中的檔案
git commit -m "" 提交目前的異動並設定摘要說明(可以不加 -m 及說明),但正常習慣下都會加說明
git reset [mode] 拆掉 commit。mode可選、point 指向 commit (慎用)
git log 查看先前的 commit 紀錄

point可用 HEAD^(前一個 commit)、HEAD^^(前兩個commit)、HEAD~3(前三個 commit)或 hash 值。

分支

什麼是分支呢?

在開發軟體的時候,可能同時會有多人在開發同意功能或修復錯誤,也有可能會有多個發布版本的存在,並且需要針對每個版本進行維護。

為了能支援同時進行數個功能的增加或版本控制,Git具備了分支功能。

分支是為了將修改紀錄的整體流程分開儲存,讓分開的分支不受其他分支的影響,所以在同一個數據庫裡可以同時進行多個不同的修改。

分支常用指令

指令 說明
git branch <branch_name> 建立新分支
git branch -D <branch_name> 刪除分支
git checkout <branch_name> 切換分支
git branch -b <branch_name> [<endpoint_name>/] 建立並切換至新分支
git branch -m 重新命名分支名稱

Git遠端連結

當一個程式需要多人分工完成時,遠端Git上去是一個很好的辦法,不僅可以做到版本控制,也可以同步大家的進度。

將本地端倉庫連結到Github

當自己的本地端倉庫建立好之後,我們也需要去Github創建空的倉庫。

創建好之後,複製紅框的字串(我們用SSH)並貼到下面的指令

#add 後面直接貼Github提供的SSH、即可
git remote add <endpoint_name> <endpoint_url>

還要輸入以下指令將檔案Push上去

#預設的endpoint_name是origin,branch_name是master
git push <endpoint_name> <branch_name>

將Github倉庫連結到本地端

記得在開始之前先建立一個空資料夾,以免遠端複製下來的資料整理複雜。
建立完空資料夾之後,將遠端資料庫的連結複製下來。

並輸入以下指令,便可以將遠端的資料複製下來了

git clone <endpoint_url>

解遠端衝突

若今天你把資料改好,想上傳到遠端,但遠端倉庫多了一份別人改的版本,這時候自己的版本就會和遠端的版本不一樣,上傳會有衝突。(如下圖)

這時候就要將自己的版本先拆掉(reset)並拉取遠端的分支紀錄合併起來。

先輸入拆掉commit的指令

#point可用 HEAD^(前一個 commit)、HEAD^^(前兩個commit)、HEAD~3(前三個 commit)或 hash 值
git reset [mode] <point>

再輸入拉取遠端的分支紀錄且合併起來的指令

git pull <endpoint_name> <branch_name>

在變動的程式中就會出現自己本地改的和遠端的版本不同之處。

選擇一樣做更動,再來就add->commit->push到遠端,就會上傳成功了。

#將檔案再加入Staging Area
git add "<file>"

#提交到Local Reposiltory
git commit -m "<message>"

#Push到Remote(遠端) Reposiltory   
git push <endpoint_name> <branch_name>

push失敗大部分是因為有衝突,快速解法是先pull再重新push一次。
合併分支不只有merge,還有rebase。
預設為fast-forward(快轉)合併。可選擇non fast-forward(快轉)合併。

Git遠端常用指令

指令 說明
git remote -v 顯示遠端倉庫
git remote add <endpoint_name> <endpoint_url> 新增遠端倉庫
git remote remove <endpoint_name> 移除遠端倉庫
git push <endpoint_name> <endpoint_url> 推送本地倉庫到遠端倉庫
git fetch <endpoint_name> 拉取遠端分支紀錄同步到本地
git merge 合併分支紀錄
git pull 拉取遠端分支並合併。fetch+merge

上一篇
[鐵人賽 Day 10] Git ( MAC ) 初入門-1
下一篇
[鐵人賽 Day 12] Swift 調色盤( Slider 練習 )
系列文
從零開始的IOS開發日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言