<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你不知道的Git

          共 4422字,需瀏覽 9分鐘

           ·

          2021-02-26 13:45

          原文:juejin.cn/post/6931977429732818952


          關(guān)注公眾號 前端人,回復“加群

          添加無廣告優(yōu)質(zhì)學習群

          前言

          相信大家已經(jīng)特別熟練了git的使用,已經(jīng)足夠滿足日常開發(fā)了。如果還有人不會使用git的去看廖雪峰大神的git教程(零基礎(chǔ)教學)滿足日常開發(fā)的同時,我們可能也會遇到奇奇怪怪的問題??,我就把我遇到的問題,以及使用Git的小技巧分享一下??。

          git pull 提示錯誤,Your local changes to the following files would be overwritten by merge

          場景再現(xiàn):

          老李??和老張??同時開發(fā)一個項目,他們兩個開發(fā)的工作有交叉,老李寫代碼非常快,沒下班就火急火燎的寫完了,老張比較慢快到下班的時候才把代碼寫完??。這時當他想更新代碼,老李說我更新代碼了你先pull一下,于是就產(chǎn)生了上面的問題!!!

          產(chǎn)生原因:

          多人操作場景,其中一人將代碼提交到遠程git,另一個人也修改了文件準備pull的時候會產(chǎn)生該問題;

          解決方案一:

          保留本地新修改的代碼。暫存本地新修改代碼,并把git服務器上的代碼pull到本地,釋放暫存 之后按照 add commit push 進行代碼更新。

           git stash
           git pull origin master
           git stash pop

          解決方案二:

          覆蓋本地新修改的代碼,只保留服務端的代碼。直接退回到上一個版本然后把git服務器上的代碼pull到本地

          git reset --hard
          git pull origin master

          .gitignore 無效的解決方法

          場景再現(xiàn): .gitignore第一次沒有寫全。比如老李新建了一個項目跟往常一樣正常的提交,隨著項目體積的不斷增加,老李發(fā)現(xiàn)有一個文件的目錄上傳的git根本是沒有必要的,還特別大。于是老李就在.gitignore中加入了響應的目錄規(guī)則,但是并沒有生效!!!

          產(chǎn)生原因:

          .gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無效的

          解決辦法:

          先把本地緩存刪除,然后再提交。

          git rm -r --cached .
          git add .
          git commit -m 'niubi'
          git push -u origin master(-u參數(shù)的意義)

          不帶任何參數(shù)的git push,默認只推送當前分支

          git push -u origin master 上面命令將本地的master分支推送到origin主機,同時指定origin為默認主機,后面就可以不加任何參數(shù)使用git push了。

          git push 如果當前分支與多個主機存在追蹤關(guān)系,那么這個時候也可以使用-u選項會指定一個默認主機,如果不加參數(shù)就會推送到默認主機(場景:同一個項目記關(guān)聯(lián)了github也關(guān)聯(lián)了gitee)。

          一個項目關(guān)聯(lián)多個遠程Git倉庫

          方法一:

          使用 git remote add 命令

          git remote add github https://github.com/xxx/xxx.git #關(guān)聯(lián)github
          git remote add gitee https://gitee.com/xxx/xxx.git # 關(guān)聯(lián)gitee

          缺點: 每次push的時候都要push兩次才能推送到響應的遠程。

          git push github master
          git push gitee master

          方法二:

          使用 git remote set-url 命令

          前提是你已經(jīng)有了一個遠程庫了,再次添加另一個遠程庫。

          git remote set-url --add github https://git.oschina.net/zxbetter/test.git
          這樣只要執(zhí)行g(shù)it push github master一次就可以推送到兩個遠程庫了。
          git push到遠程指定分支

          解決方案一

          先創(chuàng)建遠程分支

           git push <遠程主機名> <本地分支名>:<遠程分支名>

          解決方案二

          先創(chuàng)建本地分支并切換到該分支,push的時候可以直接指定遠程分支名,遠程分支會自動創(chuàng)建。

           git checkout -b [本地分支名]
           git add .
           git commit -m 
           git push origin [遠程分支名]

          git 給分支添加描述

          場景再現(xiàn):

          老張?????在開發(fā)項目的過程中經(jīng)常有不同的需求,沒有辦法他只能建立不同的分支來維護自己的項目。穩(wěn)定運行一個月之后,突然有一個地勢的項目要改需求,他已經(jīng)忘記了當時建立的分支是干什么的了如下圖。當時暴怒,提出離職??。

          解決辦法一

          使用命令給分支添加描述

          git config branch.[branch_name].description "分支描述信息" # 設置分支描述
          git config branch.{branch_name}.description # 獲取分支描述

          這樣的缺點太明顯了每次只能獲取一個分支的描述,命令還特別長。

          解決辦法二

          使用npm包git-br

          $ npm install -g git-br # 全局安裝git-br 
          $ git config branch.[branch_name].description "分支描述信息" # 設置分支描述
          $ git br # 獲取分支描述

          Git操作失敗并提示Another git process seems to be running

          原因:

          Git在使用過程中遭遇了奔潰,部分被上鎖資源沒有被釋放導致的

          解決方案:

          進入項目文件夾下的 .git文件中(顯示隱藏文件夾或rm .git/index.lock)刪除index.lock文件即可。創(chuàng)建干凈的本地分支并關(guān)聯(lián)遠程分支。

          一般在一個分支下創(chuàng)建新的分支時,會把上個分支的內(nèi)容復制到新分支中,如果我們不想要上個分支的內(nèi)容,創(chuàng)建干凈的分支,改怎么辦呢?

          解決方案

          git checkout -b 本地分支名  origin/遠程分支名

          Git提交帶表情??

          這種提交我們在github上很常見,他們是怎么把表情加上去的呢

          全局安裝 gitmoji-cli
          npm i -g gitmoji-cli

          安裝完之后只需要在每次提交的時候加上相應的表情編碼就可以了,不同的表情代表著不同的類別,使得代碼提交更加清晰。gitmoji

          舉個栗子??


          發(fā)現(xiàn)我的提交前面已經(jīng)有小表情了是不是非常明顯??。

          Git提交規(guī)范 廢話少說先上圖??

          你是不是也一臉懵逼,這是在提交什么。一般來說commit應該一眼就能知道提交的是什么。也為了和一起開發(fā)的同事清楚的知道,你這次提交的內(nèi)容??。網(wǎng)上大部分說的規(guī)范就是Angular 規(guī)范英文好的同學可以去看看,也可以直接參考阮一峰大佬的博客了解了大概規(guī)范之后我們就找響應的工具幫我們弄成規(guī)范的樣子就好啦??。Commitizen(合格Commit message 的工具) 全局安裝

           npm install -g commitizen

          然后,在項目目錄里,運行下面的命令,使其支持 Angular 的 Commit message 格式。

          commitizen init cz-conventional-changelog --save --save-exact

          注意:因為commitizen工具是基于Node.js的,所以要保證你的項目下要有package.

          之后再提交代碼的時候使用git cz 代替git commit命令就會出現(xiàn)提交類型的選擇,使你提交的代碼更規(guī)范。??

          cz-customizable 自定義中文配置 你的選擇類別可能是英文,轉(zhuǎn)換成中文也特別簡單 在項目中運行如下命令

          npm install cz-customizable --save-dev
          commitizen init cz-customizable --save-dev --save-exact --force

          修改package.json 中 config.commitizen 字段為

          "config": {
              "commitizen": {
                "path""./node_modules/cz-customizable"
              }
            }

          在項目根目錄創(chuàng)建一個 .cz-config.js 的文件這個文件的內(nèi)容我們參照大佬寫好的就行了 關(guān)閉命令窗口再次打開輸入git cz就會發(fā)現(xiàn)已經(jīng)全部變成中文啦 大功告成??。

          總結(jié)

          這就是我在開發(fā)中遇到過的一些常見問題,以后如果有新的問題,還會持續(xù)更新噠,如果我的文章對你有用,記得三連一下哦

          • 回復資料包領(lǐng)取我整理的進階資料包
          • 回復加群,加入前端進階群
          • console.log("點贊===看===你我都快樂"
          • Bug離我更遠了,快樂離我更近了
          瀏覽 85
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91麻豆精品国产91久久久吃药 | 亚洲精品永久久久久久 | 久久精品v| 天天撸一撸免费视频 | 韩国三级在线视频观看 |