團隊開發,優雅的使用工具 + 命令行的配合着進行git操作

語言: CN / TW / HK

theme: juejin

我正在參加「掘金·啟航計劃」

1.背景

已經手把手教同事很多遍操作進行git的操作,可能是由於沒認真記筆記 or 真英語不行,每次提交PR代碼或者遇到git上的一些bug都要進行詢問,並手把手的幫他解決當前的問題,我説你遇到git不必怕,幹就是了,宗旨就是不要幹掉遠程別人的代碼,然後當前在你的本地的項目的代碼可以完美的運行功能就OK了,之前我踩過比你嚴重的坑都遇到過,直接寫一下遇到的項目中遇到的問題吧。

2.自己出現的bug問題

直接上之前遇到的在公司項目使用的管理平台是tfs,我也不是很懂怎麼合分支出現的bug 我當時用的是 github 出品的桌面版工具 github desktop,在合併解決衝突的時候,出現了文件丟失的情況

出現的原因如下:

  1. 因丟失的那些代碼從未提交過上gitLab

  2. 處理衝突文件時,可能不小心點到某按鈕導致

  3. 丟失的代碼也未做過備份,也未提交過master的分支上

如何解決?參考文章:# 本地代碼丟失,如何找回未提交過的代碼,踩坑日記 git代碼管理

看了下文章,git會在.git這個隱藏文件夾下面 /object 會生成一些文件,並以兩個字符串即'數字+字母' or '字母+字母' 可能還是 '字母+字母的組合',裏面的文件是一些加密的文件

通過以下的bash命令找到文件所對應的內容: bash git cat-file -p 文件夾名文件名 一個文件一個文件找應該比較慢,因為對讀文件夾名稱及讀對應的文件名不熟悉,我覺得有個更方便的方法應該是用powershell應該可以做到多條進行讀取,讀對應這個文件夾的名稱 + 文件名,遍歷即可。

3.如何創建文件夾並關聯遠程倉庫和創建本地倉庫,以下兩種方式

第一種方式

第一步:基於master分支並創立了本地分支和遠程分支(但是未推送並不會在遠程創立分支) ```bash

初始化倉庫

  1. git init

[https...]項目所在遠程倉庫地址(不是遠程分支名稱,而是倉庫地址)

  1. git remote add origin [https....] git remote add origin [倉庫名稱]

拉取遠程分支到本地,fetch origin(拿來)

  1. git fetch origin master(dev是你要拉取的遠程分支名稱)

在本地創建dev分支並且切換到該分支

  1. git checkout -b createFollow(本地分支名稱)

拉取分支到本地

  1. git pull origin master(遠程分支名稱) 第二步:推送代碼到遠程並創建分支,可採取以下兩種方式的其中一種bash 1).

添加文件到暫存區

git add .

推送倉庫分為createFollow

git pull origin createFollow

2).

強制推送到遠程分支並建立遠程分支

git push --set-upstream origin znn ``` 如圖所示,分支就已經set up 從origin(源文件,遠程倉庫)

image.png

第二種方式

如圖所示 image.png

tips:要理解上面的相關內容為什麼可以這樣子操作,弄懂下面這篇文章基本理解:

# 細讀 Git | 弄懂 origin、HEAD、FETCH_HEAD 相關內容

4.git 遇到eslint不給提交給遠程怎麼辦?

可以參考下以下完整的項目花褲衩大佬的後台管理系統下的 .eslintrc.js文件 js       "vue/no-unused-components":"off",//當存在未定義而未使用的組件時,關閉報錯       "no-unused-vars":"off"//當存在未定義而未使用的組件時,關閉報錯 並參考文章# 【前端】vue項目 git提交失敗 running pre-commit hook:lint-staged

5.怎麼合併代碼並解決衝突

步驟如下:

工具方案進行merge

  1. 最簡單就是用github desktop,熟悉工具的人應該都知道這個界面,點擊工具中間的按鈕,點擊彈出界面最下方有一個很長的按鈕 choose a branch to merge into 分支名稱,中文的意思是合併你選擇的一個分支到你這個分支下

企業微信截圖_16643483125215.png image.png

  1. 選擇完上面的分支 並點擊下方長按鈕, 下方會有'1 conflicted file' 即有1個衝突的問題,當你合併master分支testGitfollow分支上 ,點擊相應的分支進行合併,並點擊下方的create a merge commit,就完事了,解決衝突,通過github desktop + vscode配合着一起使用

image.png

  1. 看圖,在vscode編輯器裏面,HEAD是當前分支這片代碼的內容,下方master就是來源的分支,即所需要merge的分支 用了 <<< 和 === 和 >>> 區分,相關的符號如下解釋
    • <<<代表 當前分支
    • ===代表 分隔符
    • <<<代表 來源分支,即要合併的分支

image.png 4. 根據裏面代碼 我們可以點擊上方的Accept Both Change 即可合併了代碼了,合併完,回到github desktop,發現後面按鈕變綠了,再點擊 continue merge

image.png

  1. 最後一步在主界面點擊push origin

image.png

  1. 等操作的loading滾動完就大功告成了。

git命令方案進行merge(git bash)

如何test1分支的代碼合併test2分支的代碼?

  1. 如何創建文件夾並關聯遠程倉庫和創建本地倉庫,以下兩種方式 app端應該打不開該鏈接,可以上滑去看看
  2. 提交本地代碼到遠程的分支

tes1分支 bash git add README.md git commit -m 'test1' git push origin test1 3. 拉取要合併分支的代碼 git stash # 查看下test1分支 git checkout test2 git pull 4. 切換到test1分支,併合並test2分支 git checkout test1 git stash pop git merge test2 5. 解決衝突(直接打開vscode的項目 有對應的文件名衝突,解決衝突方式和上方方式工具方案相同)

企業微信截圖_16643483015990.png

企業微信截圖_16643483125215.png 解決完衝突 bash git push origin test1 這就大功告成了

6.如何回退版本

使用到的指令

``` git log----查看提交記錄 git log --pretty=oneline----查看提交記錄簡略信息

git reset --hard HEAD^----回滾至上一個版本,可丟棄暫存區修改 git reset --hard 提交的id-----回滾至指定版本 ```

參考文章

Git回退版本方法

7.如何刪除遠程分支

```bash

查看遠程分支,上方的是本地的分支,下方的查看的是遠程的分支(下方的會有相應的顏色)

git branch -a

切換到master分支,應該是master分支才有權限去刪除對應的分支

git checkout master

刪除遠程分支 後面new_a是分支名稱

git push origin --delete new_a 有時候有可能要輸入賬號和密碼,輸入即可 ```

8.git常用指令以及提交前綴

git常用指令

  • git init-------初始化一個倉庫
  • ssh-keygen -t rsa -C "[email protected]"-------生成ssh公鑰
  • git add . ------添加文件到暫存區
  • git commit -m '提交説明' -----提交暫存到當前分支
  • git clone 項目地址 ----從遠程庫克隆項目
  • git remote add gitee2 [email protected]:divhub/ErJieDuan.git ---關聯一個遠程倉庫
  • git branch-----命令會列出所有分支,當前分支前面會標一個*號
  • git remote -v -----查看遠程倉庫
  • git remote remove origin -----刪除遠程倉庫
  • git push 遠程分支名 master -----提交本地分支到遠程
  • git pull 遠程分支名 本地分支名 -----拉取分支
  • git push -f gitee2 master -----強制提交覆蓋遠程分支
  • git config --global user.name "***" ----本地用户名
  • git config –-global user.email "*"-----本地郵箱
  • git config user.name -----查看用户名
  • git config user.email -----查看郵箱地址
  • git branch -a-----查看所有分支
  • git branch -d 分支名-----刪除一個本地分支
  • git branch --v -----查看本地所有分支對應的遠程分支使用命令
  • git branch --set-upstream-to=origin/dev dev 本地分支關聯遠程分支
  • git branch -help -----查看命令行參數
  • git checkout 分支名-----切換到某分支
  • git log----查看提交記錄
  • git log --pretty=oneline----查看提交記錄簡略信息
  • git checkout -- 文件名-----丟棄工作區修改
  • git reset --hard HEAD^----回滾至上一個版本,可丟棄暫存區修改
  • git reset --hard 提交的id-----回滾至指定版本
  • git rm ------刪除文件
  • git checkout -b 分支名 ------創建一個分支並切換到該分支
  • git merge 分支名-----合併指定分支到當前分支
  • git config -l -- 查看現在的git環境詳細配置
  • git status --用於查看在你上次提交之後是否有對文件進行再次修改。
  • git fatal: 拒絕合併無關的歷史
  • 解決方法是:允許其合併歷史。只需要在分支名後加上:--allow-unrelated-histories 即可(注意是兩個中劃線);

git提交前綴

  • build:表示構建,發佈版本可用這個
  • ci:更新 CI/CD 等自動化配置
  • chore:雜項,其他更改
  • docs:更新文檔
  • feat:常用,表示新增功能
  • fix:常用:表示修復 bug
  • perf:性能優化
  • refactor:重構
  • revert:代碼回滾
  • style:樣式更改
  • test:單元測試更改