日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面向任务的 Git 学习法

發(fā)布時間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面向任务的 Git 学习法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

對于 Git 學習而言,通常枯燥的理論學習并不能幫助我們快速掌握它的使用,需要我們結(jié)合實踐,才能更好地學會利用 Git 進行多人協(xié)作開發(fā)。本文就以任務(wù)的形式,來介紹 Git 命令的使用,希望在進行學習前,你已經(jīng)有了些許理論基礎(chǔ)。

這里安利一個可以輔助 git 學習的網(wǎng)站:Learn Git Branching

文章目錄

    • 前言
    • Task 1:局部設(shè)置用戶名和郵箱
    • Task 2:提交遠端的流程
    • Task 3:提交后的回退操作
    • Task 4:拉新分支進行開發(fā)
    • Task 5:提交項目的部分相似文件
    • Task 6:利用 git merge 進行分支合并
    • Task 7:刪除本地和遠程分支
    • Task 8:刪除項目中的 Untracked files
    • Task 9:利用 git rebase 進行分支合并
    • Task 10:給項目打版本標簽

Task 1:局部設(shè)置用戶名和郵箱

描述:我們通常會按照下面命令進行 git 的用戶名和郵箱的配置。

# 全局配置用戶名:TestName git config --global user.name TestName# 全局配置郵箱:email@example.com git config --global user.email email@example.com

但是有時候,我們需要用工作的郵箱維護公司的項目(全局配置),然后用自己的 GitHub 注冊郵箱維護自己的開源項目(局部配置),我們就需要局部設(shè)置自己項目倉庫使用的用戶和郵箱了。

# 局部設(shè)置用戶名:VeggieOrz git config user.name VeggieOrz# 局部設(shè)置郵箱:lwh_233@163.com git config user.email lwh_233@163.com# 查看倉庫當前使用的用戶名 git config user.name # 查看倉庫當前使用的郵箱 git config user.email

Task 2:提交遠端的流程

描述:目前你已經(jīng)在本地完成了某個功能的開發(fā),你需要把你寫的代碼提交到遠端。

注意點:在將本地修改提交到遠程之前,一定要確保本地的代碼是最新的。

# 存儲“工作區(qū)和暫存區(qū)”的修改 git stash# 拉下最新代碼 git pull# 取出“工作區(qū)和暫存區(qū)”的修改 git stash pop# 本地正常提交流程 git add . git commit -m 'some information'# 提交代碼到遠端 git push

Task 3:提交后的回退操作

描述1:你不小心將錯誤的代碼提交到本地的暫存區(qū)或者倉庫了,你希望可以回退你的提交的代碼(代碼依舊保留)。

# 將提交到本地倉庫的代碼回退到暫存區(qū) git reset --soft commitID# 從暫存區(qū)回退到工作區(qū) git reset Headgit reset Head file_name

描述2:你的某個提交(commitID: 80fbaf0e21)已經(jīng) push 到遠端了,但是你需要撤銷掉該提交中的所有內(nèi)容。

這個時候就可以用上我們的 git revert 命令

# 將最新提交內(nèi)容反向修改回去,并形成新的commit git revert HEAD # 將指定 commitID 的提交內(nèi)容反向修改回去,并形成新的commit git revert commitID

執(zhí)行完成后,我們發(fā)現(xiàn)該次提交的內(nèi)容已經(jīng)成功回退,用 git log 還可以看到如下的 revert 操作記錄,即 revert 操作是會生成一條單獨的 commit 記錄

commit 13632e9378cc2dcc404389474f0cef741c868391 (HEAD -> master) Author: VeggieOrz <VeggieOrz@163.com> Date: Wed Nov 25 01:37:29 2020 +0800Revert "Revert "update file again""This reverts commit 80fbaf0e218a48bc665f1e5d11b8ba399ecacf51.

描述3:你執(zhí)行了某些神奇的操作后,發(fā)現(xiàn)場面漸漸失去控制,想讓代碼變回之前還沒有操作過的樣子。

這個時候,我們可以執(zhí)行如下操作:

  • 我們需要從 git log 中找到還沒有操作時的 commitID
  • 用 git reset --hard commitID 讓代碼變回那時的樣子
  • # 將代碼回退到上一個 commit git reset --hard HEAD # 將代碼回退到指定 commitID 的提交中 git reset --hard commitID

    注意:執(zhí)行完 git reset --hard 后,(commitID, now_commitID] 直接的記錄在 git log 中將會找不到了!

    Task 4:拉新分支進行開發(fā)

    描述:新的需求來了,你需要在主分支的基礎(chǔ)上拉一個名為 new_dev 的新分支進行新需求的開發(fā)。

    注意點:一定要記得和遠程建立關(guān)聯(lián),否則創(chuàng)建的分支只在本地有,后續(xù)就會遇到很多麻煩。

    # 創(chuàng)建并切換到名為 new_dev 的分支 git checkout -b new_dev # 上面命令等同于下面兩條命令 git branch new_dev git switch new_dev# 將分支推送到遠端 git push --set-upstream origin new_dev# 查看遠端分支和本地分支的關(guān)聯(lián) git branch -vv

    Task 5:提交項目的部分相似文件

    例如,我們通過 git status 命令看到如下反饋:

    On branch dev Your branch is up to date with 'origin/dev'.Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: Resources/a.jsonmodified: Resources/b.jsonmodified: Resources/c.jsonmodified: Resources/d.jsonmodified: algorithm.cpp no changes added to commit (use "git add" and/or "git commit -a")

    現(xiàn)在,我們希望只提交那部分 json 文件的改動,可以嘗試下面命令

    # 利用 * 通配符進行匹配,其他提交流程照舊 git add Resources/*

    Task 6:利用 git merge 進行分支合并

    描述:你現(xiàn)在剛在 new_dev 分支上完成新需求的開發(fā),現(xiàn)在你需要將 new_dev 分支的內(nèi)容合并到 release 發(fā)布分支中。

    注意點:需要保證本地兩個分支(new_dev 和 release)的代碼都是最新的。

    # 保證 new_dev 分支的代碼是最新的 git pull# 切換到 release 分支 git switch release# 保證 release 分支的代碼是最新的 git pull# 將本地的 new_dev 分支合并到 release 分支中 git merge new_dev# 提交本地的合并記錄 git push

    Task 7:刪除本地和遠程分支

    描述1:現(xiàn)在你已經(jīng)完成了一系列需求的開發(fā),并且改動都已經(jīng)合并到了 develop 分支,你發(fā)現(xiàn)本地存在很多以后根本不會用到的分支。為了方便分支管理,你需要將這些無用的分支刪除,下面以刪除 new_dev 分支為例。

    注意點:在進行刪除之前,需要確保分支中的內(nèi)容已經(jīng)合并到主分支了,而且以后不再需要該分支。

    # 查看本地和遠程的所有分支 git branch -a # 如果遠程分支太多,可以用 git branch -vv# 刪除遠端分支 git push origin --delete new_dev# 刪除本地分支 git branch -d new_dev # 如果提示刪除失敗則用 git branch -D new_dev

    描述2:經(jīng)過相當長一段時間的開發(fā),你發(fā)現(xiàn)本地已經(jīng)堆積了大量的分支,這增加了你查找分支的成本,你希望清空本地所有無用的分支。(不刪除遠程分支,遠程分支由 QA 管理)

    # 刪除當前分支以外的所有分支 git branch | xargs git branch -d# 刪除分支名滿足匹配結(jié)果的分支 git branch | grep 'dev*' | xargs git branch -d

    tip:管道 ‘|’ 是實現(xiàn)「將前面的標準輸出作為后面的標準輸入」;xargs是實現(xiàn)「將標準輸入作為命令的參數(shù)」。

    Task 8:刪除項目中的 Untracked files

    描述: 進行 Merge 操作的回退之后(git reset HEAD和git checkout .),用git status命令發(fā)現(xiàn)工程目錄下還存在著很多 Untracked files(如下文所示),我們需要將他它們刪除。

    On branch new_dev Your branch is up to date with 'origin/new_dev'.Untracked files:(use "git add <file>..." to include in what will be committed).gitlab/Resources/icon.pngimage_resources.pynothing added to commit but untracked files present (use "git add" to track)

    使用命令如下:

    # 刪除所有的 Untracked files git clean -f # 刪除所有的 Untracked file 和 Untracked directory(目錄) git clean -fd

    注意點: 由于刪除了之后沒有辦法再復原,我們需要謹慎一點,先用以下命令確認要刪除的文件不再需要才進行刪除。

    # 查看將要刪除文件或者目錄 git clean -nf git clean -nfd

    Task 9:利用 git rebase 進行分支合并

    描述: 你正在 new_dev 分支上進行新需求的開發(fā),dev 分支上剛合入了新版本的代碼,你需要將 dev 分支的代碼合入到你的分支中。

    由于 git merge 操作會讓 git 提交記錄變得不美觀(時間線上有過多的分叉),這里需要用 git rebase 進行操作。

    首先,我們需要切換到 dev,然后拉取最新代碼,rebase 之前需要保證本地該分支代碼為最新版本。

    git switch dev git pull

    為了減少解決沖突的次數(shù),我們還需要壓縮提交。先找到拉分支時,原來分支最新的commitID,然后利用git rebase -i進行開發(fā)分支的提交壓縮。

    git switch new_dev# 找到拉分支時,原來分支最新的commitID git log# 壓縮(commitID, HEAD] 成一個 commit git rebase -i commitID

    這里介紹一個 vim 的字符串替換命令,輔助我們將 pick 修改為 s。通常我們執(zhí)行2,ns/pick/s/,其中 n 為最后一次提交所在的行數(shù)。

    # 替換第 m 行到第 n 行中每一行的第一個 str1 為 str2 m,ns/str1/str2/

    最后,我可以進行合并的 rebase 操作了。完成合并和沖突的解決后,需要將加-f參數(shù),將代碼強推到遠端。

    git rebase dev# rebase 會影響時間線,所以需要強推 git push -f

    Task 10:給項目打版本標簽

    描述1: 我們在完成一個版本的開發(fā)的時候,需要給代碼打上版本標簽。現(xiàn)在,我們剛完成 0.1.0 版本代碼的開發(fā),需要完成打標簽的操作。

    # 在本地打標簽 git tag '0.1.0'# 將標簽推送到遠端 git push --tags

    描述2: 再精巧的工匠也有操作失誤的時候,在打了標簽之后,我們發(fā)現(xiàn)還有部分該版本的代碼沒有提交。現(xiàn)在,我們需要刪除本地和遠端的剛打下的 0.1.0 標簽,以方便后續(xù)提交了代碼再重新打標簽。

    # 刪除本地的 0.1.0 標簽 git tag -d '0.1.0'# 查看標簽 git tag# 刪除遠端的 0.1.0 標簽 git push origin :'0.1.0'

    持續(xù)更新中……

    總結(jié)

    以上是生活随笔為你收集整理的面向任务的 Git 学习法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 色小姐综合网 | 国产古装艳史毛片hd | 美国色视频 | 日本 在线 | 日韩欧美大片 | 欧美亚洲综合在线 | 日韩乱码一区二区 | 亚洲午夜久久久久 | 小宵虎南在线观看 | 91精品一区二区三区在线观看 | 日韩在线视频第一页 | 波多野结衣视频一区二区 | 婷婷久草| 亚洲日本色| 日韩一区二区精品 | 日本三级韩国三级三级a级中文 | 久久精品黄aa片一区二区三区 | 亚洲第一看片 | 黄色精彩视频 | 国产欧美日韩综合精品一区二区三区 | 国精品一区二区三区 | 亚洲精品少妇 | 熊猫成人网 | 国产欧美综合一区二区三区 | 久久久久无码精品国产 | 高清一级片 | av网站在线看 | 同人动漫在线观看 | 欧美日韩在线播放三区四区 | 久久久久久久久久一级 | 一区二区三区精彩视频 | 欧美成人精品欧美一级乱黄 | 欧美日韩中文国产一区发布 | 午夜影院 | 国产高清精品在线 | 性生活在线视频 | 一区二区毛片 | 巨大胸大乳奶电影 | 亚洲专区欧美 | 亚洲成人av综合 | 中文字幕视频网 | 亚洲AV无码成人精品区明星换面 | 久久免费在线观看 | 日韩av不卡在线 | 桃谷绘里香在线播放 | 国产夜色视频 | 前任攻略在线观看免费完整版 | 亚洲一区二区三区91 | av在线官网 | av片亚洲| 黄色av播放 | 成人超碰在线 | 日本黄色免费观看 | 国产精品成人网 | 超碰在 | 精品国产一区二区三区在线 | 一区二区少妇 | 嫩色av| 日本精品在线观看 | 一本加勒比波多野结衣 | 18禁男女爽爽爽午夜网站免费 | 国产精品爱啪在线线免费观看 | 欧美一级艳片视频免费观看 | 欧美日韩1区2区3区 亚洲日本精品视频 | 欧美激情久久久 | ⅹxxxxhd亚洲日本hd老师 | 国产精品一区在线观看 | 中文字幕在线观看91 | 豆花视频在线播放 | 国产一级二级 | 日本黄色视屏 | 国产一区二区三区四区hd | 日日摸夜夜添夜夜添高潮喷水 | 久久久久久久国产精品美女 | 久久青娱乐 | 亚洲精品中文字幕在线观看 | 欧美日韩一区二区三区在线 | 狠狠看| 最近最经典中文mv字幕 | 久久一级黄色片 | 亚洲成人精品在线播放 | 亚洲综合久 | 日韩一级片在线观看 | 香蕉大人久久国产成人av | 中文字幕永久在线观看 | 激情五月色综合国产精品 | 国产经典一区二区 | 91丨九色丨蝌蚪丨丝袜 | 亚洲欧美国产高清va在线播放 | 高跟av| 日本少妇性高潮 | 久久精品波多野结衣 | videos另类灌满极品另类 | 人人妻人人澡人人爽久久av | 四季av一区二区凹凸精品 | 婷婷综合久久 | 3344成人| 日av中文字幕 | 少妇高清精品毛片在线视频 |