返回過去版本
在我們不斷更新原代碼的過程中,有可能還未完成,但是項目必須本機持續work,因此只能先運行過去的版本,必須將本機的專案返回到過去的狀態
reset
強制返回(—hard)
- 後面須填入參數為返回的版本
版本:
HEAD:上一次commit版本
HEAD~ (HEAD^):上上次commit的版本 (HEAD版本-1)
HEAD~n:前N代的版本
- HEAD^^(前二代版本);HEAD^^^(前三代版本) 依此類推
git log —oneline 所顯示的版本號
1 2 3 4 5
| git reset --hard HEAD git reset --hard HEAD~ git reset --hard HEAD~4 # 返回前四個版本 git reset --hard b4f2d74 # 返回到指定版本號 (即使是比當前版本更新的版本號也可以,只要還記得版本號就可以)
|
reflog
要是沒有記住特定的版本號可使用reflog查看做了那些移動HEAD的操作來推估版本號
再搭配reset一起使用
1 2
| git reflog git reflog -4 #指定顯示前四條操作
|
使用分支(branch)
查看分支狀態
*
所指向的分支為當前所在分支
- 如要列出包含遠程庫的所有分支須加
-a
參數
建立分支
1 2 3
| git branch 分支名 git branch 分支名 分支點基礎 git branch dev remotes/origin/dev #以遠程的remotes/origin/dev分支,作為興建本地dev分支的基礎
|
- 如果只填入分支名,默認以本地主分支(master)作為興建分支的基礎
切換分支(checkout)
建立分支的同時切換到該分支(-b)
- 切換過去的分支狀態與主分支狀態是一樣的
- 再次使用
git branch
確認*
所指向的分支
刪除分支(-d)
合併分支(merge)
將開發分支的內容合併到主分支(合併成最新版本)
tips
- 通常合併分支時,git會用快速合併(fast forward)模式,但是有些快速合併不能成功,但是合併並沒有發生衝突,git會在此時合併之後幫忙進行新的提交
- 要是要禁止使用快速合併
1
| git merge --no-ff -m "信息備註" 分支名1022222今天他透視嗎與可喔嗎耨黑獄
|
分支衝突
當團隊中多人同時編輯一個文件的時候,難免會出現源碼合併時產生衝突問題
在merge之後會產生衝突conflict,需手動修改衝突代碼,再重新提交
使用tag標籤
任何軟體或是應用程序在發布時都應該給一個版本號,來管理每次的發布內容,便於今後的管理
顯示tag狀態
為當前git庫的狀態打tag
1 2
| git tag 版本號 git tag v1.0.0 #將當前的git庫狀態作為1.0.0版本
|
查看不同tag的狀態
1 2
| git show tag名 git show v1.0.1 #查看tag為v1.0.1的狀態
|
連接遠程伺服器
將編寫完成的代碼提交到服務器端,其他開發人員可從服務器拉取你推送的代碼,完成團隊的協同開發
把遠程庫拷貝到本地(clone)
生成ssh-key
1
| ssh-keygen -t rsa "郵件地址"
|
連接服務器信息(remote)
- 用作確認pull或是fetch是對哪個遠程庫載入 push是對哪個遠程庫進行推送
本地推送至服務器(push)
- 要是遠程庫上沒有此分支名稱,遠程庫會建立一個新的分支
本地的分支跟蹤遠程的分支
本地的提交與遠程的提交記錄要是不一致,會給出提示
1
| git branch --set-upstream-to=origin/分支名 本地分支名
|
- 如果有不一致的地方可用
git status
查看
- 且如果設置跟蹤遠程分支
git push
時可不加任何參數,將自己目前所在的庫往遠程庫推送
從遠程分支拉取代碼(pull)