Git 的誕生是一個非常有趣的故事。1991年 Linus 開源了 Linux 核心,無數 Linux 愛好者在世界各地為 Linux 編寫程式碼,那麼問題來了,這些程式碼該如何管理呢?起初 Linus 使用 BitKeeper(BitMover 公司的版本控制軟體)管理 Linux 的核心開發,後來 BitMover 停止了對 Linux 的支援,於是 Linus 秉承自己的版本自己寫的精神,花了兩週時間自己用 C 寫了一個分散式版本控制系統,這就是 Git。
本期技術週刊一起了解 Git,歡迎大家閱讀 ~
文章推薦
Git 操作不規範,戰友提刀來相見! // 王中陽Go
問題描述:
- 小A和我在同時開發一個功能模組,他在最佳化之前的程式碼邏輯,我在開發新功能。
- 小A在我之前把程式碼提交到了測試分支,我想提交我的新功能程式碼到測試分支時發現巨多衝突,腦袋瞬間就炸了,Boom一聲驚雷響啊。
分析一下:
- 首先解決衝突浪費時間,我的新功能程式碼每次提測到測試分支都需要解決衝突。
- 我在測試分支解決衝突,只能按照小A最佳化後的程式碼邏輯的去解決,和我自己的分支邏輯並不一致。
- 交付給測試同學的測試分支程式碼,和我自己分支的程式碼不一致,這種測試是沒有意義的。
好慌,我程式碼沒了!不會是變基變出問題了吧? // Kagol
前兩天檢視程式碼時,發現PR裡面有兩個提交的描述資訊一模一樣,於是我提出應該將這兩個提交合併成一個,保持提交樹的清晰。
先儲存起來!
而同事這時正在開發別的特性,工作區不是乾淨的,沒法直接執行 git rebase 操作,於是很自然地執行
git stash
將正在修改的內容儲存到一個棧中,並維持當前工作區乾淨。
這樣就可以執行切換分支、變基等操作,這些操作能執行的前提是當前工作區是乾淨的。
工作中如何使用 Git // 沐華
本文將從 Git 入門到進階、由淺入深,從常用命令、分支管理、提交規範、vim 基本操作、進階命令、衝突預防、衝突處理等多方面展開,足以輕鬆應對工作中遇到的各種疑難雜症,如果覺得有所幫助,還望看官高抬貴手給個讚唄,感謝
雖說現在工作中使用 Git 都會用一些圖形化管理工具來提高開發效率。可事實上使用圖形管理化工具的前提,也是基於對命令都基本瞭解。還有比如我平時用的工具 GithubDesktop 因為不帶第三方合併工具,只能手動解決衝突,而且有的功能沒有,只能配合自己手動敲命令。
即使是工具也沒有那麼完美的工具,掌握命令才是漁,工具只是魚。其他的 Git 視覺化管理工具比如:小烏龜、SourceTree、還有我們開發用的 IDE 整合的,本期就不過多介紹了
Git 分支管理策略彙總 // alwaysbeta
最近,團隊新入職了一些小夥伴,在開發過程中,他們問我 Git 分支是如何管理的,以及應該怎麼提交程式碼?
我大概說了一些規則,但仔細想來,好像也並沒有形成一個清晰規範的流程。所以查了一些資料,總結出下面這篇文章,一共包含四種常見的分支管理策略,分享給大家。
在實際工作開發中非常實用的幾個 git 命令 // FFF方
git 在實際開發過程中的重要性對在座的各位來說想必不用我過多贅述,但是對於 git 中千千萬萬複雜的命令來講,在實際開發過程中只有小部分是最經常使用的,今天國慶節第一天,由於疫情原因沒回家。閒著沒事就給大家總結一下在實際工作中我個人最最最最經常使用的命令,並且我會結合我日常工作流程來講解。
tips:就不過多介紹 git add-commit-push 這三個命令了
純 Git 實現前端 CI/CD // believeyourself
最近要把前端 react 專案部署到私有伺服器上,研究了好幾種持續部署方案,這裡簡單描述一下。
總的部署思路分兩種:
1.編譯後的檔案部署
編譯後的檔案部署,就是先在本地進行npm run build打包,生成 build 資料夾,然後將 build 資料夾傳到伺服器,再用 Nginx 配置一個靜態解析即可。
這種方案用 rsync 直接上傳就可以,這裡不贅述。
2.原始碼部署
原始碼部署就是把原始檔上傳到伺服器上,然後:
$ npm install && npm run build
這種方式是將打包工作交給伺服器(或其他構建工具),本地只是將原始碼 push 上去,git 監聽到推送然後自動開始構建。這是現在流行的方式,大多數持續整合工具都是這麼幹的。
今天的重頭戲來了!我們不借助其他構建工具,只用純 Git 實現監聽 push 並自動構建。相信我,這一步非常有趣~
工作中使用 Git 解決問題的場景 // 山頭人漢波
簡單來說,就這七點:
- 使用 git rebase 讓提交記錄更加清晰可讀
- 使用 git reflog + git reset 跳到任意 commit
- 使用 git cherry-pick 獲取指定的 commit
- 使用 git commit --amend 更改提交內容
- 使用 git revert 回滾某次的提交
- 使用 git stash 來暫存檔案
- 配置 git alias 提升工作效率
git 配置以及替換 gerrit 預設 commit-msg hook // 記得要微笑
Git 配置規範:配置使用者名稱和郵件
為了提交記錄便於識別,配置中文名,郵箱配置成gitlab
註冊郵箱
git config --global user.name "中文姓名"
git config --global user.email "email@[email.com"
示例
user.name
配置規則: name#工號
示例 git config --global user.name "張三#A00003"
user.email
配置規則: 統一使用公司的郵箱。示例 git config --global user.email "san.zhang@casstime.com"
問答推薦
- git 如何把本地所有分支透過命令列全部提交到遠端倉庫?
- git 第一次提交失敗是因為沒有進入到專案名中提交嗎?
- git branch 檢視分支為什麼之前是 master ? 現在是 main?
- git 如何在不進入互動式編輯器的情況下 合併 commit ?
- git 如何檢視分支是從哪裡分出來的?
- git 如何放棄跟蹤對一個檔案單次修改的操作,但是不放棄修改?
- git 分支合併問題?
- git 如何找到程式碼是從哪個分支被 merge 進主分支的?
- git 如何控制版本?
- git 如何忽略本地檔案,同時不更改遠端檔案?
# SegmentFault 技術週刊 #
「技術週刊」是社群特別推出的技術內容系列,一週一主題。
每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。
如有問題可以新增小姐姐微信~