Stories

Detail Return Return

SegmentFault 思否技術週刊 Vol.78 — Git 必看技術補給 - Stories Detail

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 技術週刊 #

「技術週刊」是社區特別推出的技術內容系列,一週一主題。

每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。

如有問題可以添加小姐姐微信~

image.png

user avatar linlinma Avatar yangxiansheng_5a1b9b93a3a44 Avatar anonymous_5f6b14f11289a Avatar dalidexiaoxiami Avatar user_4jsjtpci Avatar shenfq Avatar xingzhaodezhaoxiansheng Avatar
Favorites 7 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.