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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Git之常见零碎问题的原因分析和解决方案

發布時間:2024/5/28 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git之常见零碎问题的原因分析和解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Git 分支已經刪除

  • 問題描述:遠程獲取分支最新代碼,下拉代碼的時候,提示遠程分支已經不存在:
# 獲取最新代碼報錯 ? git pull Your configuration specifies to merge with the ref 'refs/heads/ipo_user' from the remote, but no such ref was fetched.
  • 解決方案:該分支已經在遠程倉庫中被刪除,因此需要切換到其它分支:
# 切換到dev分支 ? git checkout dev

二、LFS 提交方式不對

  • 問題描述:LFS 獲取文件,查看倉庫狀態的時候,發現有文件已經被刪除,但是 checkout 的時候,提示操作不當:
# 當前倉庫狀態 ? git status Changes not staged for commit:(use "git add/rm <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)deleted: data/model/app1.zipdeleted: data/model/app2.zip# 執行checkout命令沒有效果 ? git checkout -- data/model/app1.zip Encountered 1 file(s) that should have been pointers, but weren't:data/model/app1.zip
  • 解決方案:清除緩存并執行硬重置:
# 操作需謹慎 ? git rm --cached -r . ? git reset --hard

三、LFS 撤銷歷史提交

  • 問題描述:在倉庫修改 lfs 的 track 文件的時候,本應該會添加 “*.iso” 號結果修改成了錯了 “.iso”,導致 push 上去發現參數文件沒有使用 lfs 文件,現在需要將這一次關于 lfs 的提交 rewrite 掉:
# 普通文件的處理方式 $ git reset –hard ^HEAD $ git push origin master
  • 解決方法:lfs 工具提供了 migrate 命令來處理這個問題:
# 使用migrate命令 $ git lfs migrate import --include="data/app_mold/*" --everything# 推送報錯表示分支有保護機制,去掉之后在推送即可 $ git push --force Locking support detected on remote "origin". Consider enabling it with: ......! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'git@xxx.xxx.com:xxx/app.git'

四、LFS 需要輸入密碼

  • 問題描述:提送 lfs 信息,提示需要輸入密碼:
# 提示信息如下所示 Authentication failed for 'https://______.git'
  • 解決方案:添加本地公私鑰并設置緩存時間:
# [1] 使用SSH連接 $ cd ~/.ssh $ ssh-keygen -t rsa -C "xxxxxx@yy.com" $ ssh -T git@github.com# [2] 修改緩存時間 $ git config --global credential.helper 'cache --timeout=3600'# [3] 本地儲存起來 $ git config --global credential.helper store

五、LFS 無法獲取文件

  • 問題描述:使用新版本的 LFS 工具的時候,某個環境發現如下報錯,排除原因發現是對應倉庫的 lfs 文件并沒有從遠程倉庫拉下來,服務更新都是使用的 CI/CD 工具,但是其他服務器獲取 lfs 文件并沒有任何問題,而且登錄服務器手動執行 git lfs pull 也是可以正常執行的。排除自動部署工具的默認參數和對應的 git 工具配置并沒有發現任何有用的信息:
# 報錯信息如下 2020-xx-xx xx:xx:xx: I tensorflow/stream_executor/platform/default/dso_loader.cc:28] Traceback (most recent call last):File "/usr/lib/python3.6/runpy.py", line 113, in _run_module_as_main"__main__", mod_spec)......File "/data/app_test/.../hhkc/.../network.py", line 54, in <module>from transformers.modeling_hhkc import ( ImportError: cannot import name 'HhkcLayerNorm'
  • 解決方案:這是因為 git-lfs 工具的版本太低導致其默認參數和新版的不一致,這才導致自動部署工具獲取 lfs 文件異常。出問題的服務器,當時安裝 lfs 工具都是使用 apt 來安裝的,所以默認的倉庫對應的軟件版本號比較低,所以按照官方網站的更新方式部署更新之后,一切都變得正常:
# 老版本的lfs工具(git-lfs/2.3.4) $ git lfs env | grep "dTransfers" DownloadTransfers=basic UploadTransfers=basic# 新版本的lfs工具(git-lfs/2.12.0) DownloadTransfers=basic,lfs-standalone-file UploadTransfers=basic,lfs-standalone-file# git-lfs-standalone-file 為文件URL(本地路徑)提供獨立傳輸適配器 https://github.com/git-lfs/git-lfs/blob/master/docs/man/git-lfs-standalone-file.1.ronn # 官方提供的更新方式 $ curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash $ sudo apt-get install git-lfs $ git lfs install

六、Git 切換分支不存在

  • 問題描述:在一個測試倉庫上面需要臨時切換分支,但是切換分支的時候提示如下錯誤,提示沒有找到匹配的分支,但是登陸遠程倉庫,發現對應的分支是存在的。可能想到的原因是沒有更新代碼導致無法獲取遠程倉庫的分支信息,隨即執行這個 git fetch 命令,但是報錯依舊,且通過 git branch -a 也看不到對應的分支信息:
# 報錯提示 $ git checkout bugfix_login_error error: pathspec 'bugfix_login_error' did not match any file(s) known to git.
  • 解決方案: 后來,排查了一下 .git 目錄文件夾里面的信息,隨即發現了問題原因,即遠程倉庫的獲取只是對標于 master 分支,所以通過執行 git fetch 命令之后也是無法獲取遠程倉庫的分支信息的,按照如下修改即可解決:
# 發現遠程倉庫的獲取只是對標于master分支 $ cat .git/config [remote "origin"]url = git@github.com/EscapeLife/app-demo.gitfetch = +refs/heads/master:refs/remotes/origin/master [branch "master"]remote = originmerge = refs/heads/master# 應該為帶 * 的匹配方式 [remote "origin"]fetch = +refs/heads/*:refs/remotes/origin/*
  • 問題原因: 我們正常克隆倉庫的時候,對應的 config 配置就是帶 * 的樣式,但是為什么這個環境的配置會修改了呢?這是因為環境是通過 CI 進行自動更新的,而 CI 配置只獲取指定分支的代碼,即拉去代碼的時候就指定,這也就導致配置文件也就跟著變更:
# 讓Git每次只拉取遠程的master分支,而不是遠程的所有分支 $ git fetch origin master:refs/remotes/origin/master

七、Git 顯示中文亂碼

  • 問題描述:使用 git status 命令查看文檔或者目錄改動時,顯示不出中文文件名和中文文件名稱,非常不方便:
# 顯示中文亂碼 ? git status Changes not staged for commit:(use "git add/rm <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)deleted: 234\123\234\654\234/954\236\952/.vscode/settings.json
  • 解決方案:在默認設置下,中文文件名在工作區狀態輸出,中文名不能正確顯示,而是顯示為八進制的字符編碼。將 git 配置文件 core.quotepath(引用路徑) 項設置為 false,即可顯示中文。要注意的是,這樣設置后,git bash 終端也要設置成中文和 utf-8 編碼,才能正確顯示中文。
# [修改方式一] 臨時修改 ? git config core.quotepath false# [修改方式二] 全局配置 ? git config --global core.quotepath false# [修改方式三] 編輯/etc/gitconfig文件 ? vim /etc/gitconfig [core] quotepath = false # 引用路徑不再是八進制

八、Git 恢復丟失數據

  • 問題描述:使用 Git 工具管理倉庫的時候,意外刪除文檔,重置倉庫,如何快速恢復丟失的數據呢?重置數據,一般都是使用了 reset 命令導致的,因為其命令用于改變當前的倉庫狀態。如下所示,是常見的 Git 重置操作,一旦執行之后,如果那該怎么辦呢?
# 暫存區 <- 本地倉庫 $ git reset HEAD <file> # 本地倉庫文件內容覆蓋暫存區文件內容# 工作區 <- 本地倉庫 $ git reset [commit] # 本地倉庫覆蓋到工作區(保存回退文件內容修改);默認就是--mixed參數 $ git reset [commit] # 重置當前分支的指針為指定commit;同時重置暫存區但工作區不變 $ git reset --soft [commit] # 本地倉庫覆蓋到工作區(保留修改并加到暫存區) $ git reset --soft [commit] # 回退為指定版本(不刪除回退文件的修改) $ git reset --hard [commit] # 本地倉庫覆蓋到工作區(不保留修改直接刪除掉) $ git reset --hard [commit] # 重置當前分支的HEAD為指定commit;同時重置暫存區和工作區;謹慎使用# 工作區 <- 本地倉庫 $ git reset --keep [commit] # 重置當前HEAD為指定commit,但保持暫存區和工作區不變 $ git reset --mixed [commit] # 本地倉庫覆蓋到工作區(保存回退文件內容修改)
  • 解決方案:當操作進行版本回退,現在又需要回退之前的文件信息,此時分為三種情況:
    • 之前的修改進行 commit 提交,即執行 git commit;
    • 之前的修改未進行 commit 提交,即執行 git add;
    • 之前的修改未進行 commit 提交,即也沒有執行 git add;
# 針對第一種情況 $ git reflog # 獲取hash值 $ git reset --hard [hash] # 回退到之前修改的狀態# 針對第二種情況可以執行如下恢復步驟 # 因為會重置暫存區和工作區且沒有提交記錄,所以不好恢復 # 可以利用fsck命令查找到之前丟失文件(在.git/lost-found目錄) # other -> .git/lost-found/other -> 添加信息 # commit -> .git/lost-found/commit -> 提交信息 $ git fsck --lost-found# 針對第三種情況可以執行如下恢復步驟 因為根本就沒有被Git接管,所以恢復就無從談起 但是如果使用的是JB(jetbrains)家的IDE工具,可以通過自帶的文件歷史功能成功恢復!=> 右鍵菜單本地歷史功能

九、Git 忽略冗余文件

  • 問題描述:使用過蘋果電腦的話,肯定只有默認會給目錄生成的 .DS_Store 文件。在 macOS 系統上面,我們會看到每個目錄都會存在一個名為 .DS_Store 的隱藏文件,其作用就是以告訴 Finder 應該如何顯示它,但是 99% 的時間我們都不關心它,尤其是在代碼庫中,我們更不愿意或者關注它。雖然,可以在代碼庫里面使用 .gitignore 文件進行忽略,但是每個項目都要來一遍,也挺麻煩的:
? ls -lh -rw-r--r--@ 1 escape staff 22K Jan 16 15:39 .DS_Store drwx------ 48 escape staff 1.5K Jan 16 16:05 .Trash
  • 解決方案:如果做到一次配置,全局忽略 .DS_Store,就是我們繼續要解決的問題。Git 中可以通過設置 core.exclusudesfile 變量來指定全局的 gignore 文件。
# 忽略你需要忽略的文件# Logs *.log# OS generated files .DS_Store $ cat .gitignore_global .DS_Store .Spotlight-V100 .Trashes Thumbs.db # 創建全局配置文件 => gitignore $ ln -s /Users/escape/fuckcode/dotfiles/.gitignore_global /Users/escape/.gitignore# 設置Git配置對應文件 $ git config --global core.excludesfile ~/.gitignore# 或者在配置文件里面添加對應內容 $ cat .gitconfig excludesfile = ~/.gitignore

十、Git 分支切換異常

  • 問題描述:使用 clean 命令的時候需要謹慎,不然容易丟失數據。在代碼倉庫中切換分支,提示如下錯誤,導致無法正常切換:
? git checkout stable error: The following untracked working tree files would be overwritten by checkout:
  • 解決方案:通過錯誤提示可知,是由于一些 untracked working tree files 引起的問題,只要解決這些 untracked 的文件就能解決:
# 清理所有沒有報錯的文件和目錄 # -n 顯示將要刪除的文件和目錄 # -d 刪除未被添加到git的路徑中的文件(需謹慎使用) # -f 強制運行 # -x 刪除忽略文件已經對git來說不識別的文件 ? git clean -n ? git clean -df ? git clean -d -fx

總結

以上是生活随笔為你收集整理的Git之常见零碎问题的原因分析和解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 毛片在哪看| 亚洲伊人网站 | 久久mm | 成人激情文学 | 老湿福利影院 | yw在线观看 | 国产精品污www一区二区三区 | 欧美日韩乱 | 视频在线| 综合五月婷婷 | 亚洲av首页在线 | 亚洲区免费 | 欧美影院一区二区三区 | 国产高清在线免费 | 污片免费观看 | 国产成人精品一二三区 | 在厨房拨开内裤进入毛片 | 国产欧美精品在线 | 欧美影院在线观看 | 可以免费看毛片的网站 | 国产又爽又猛又粗的视频a片 | 波多野结衣一区二区三区免费视频 | 天天操穴 | 欧美毛片在线观看 | 久久日韩精品 | 快灬快灬一下爽69 | 日韩免费观看一区二区三区 | 国产精品久久国产 | 色欲av伊人久久大香线蕉影院 | 欧美一区二区福利视频 | 翔田千里一区二区 | 婷婷国产 | av中字在线 | 蜜臀在线一区二区三区 | 国产三级aaa| 国产成人亚洲精品自产在线 | 人人搞人人 | 亚洲伦理一区二区三区 | 男女爱爱动态图 | 熟女熟妇伦久久影院毛片一区二区 | 欧美爱爱爱 | 久久久久九九九九 | 在线观看国产成人 | 国产色婷婷一区二区三区竹菊影视 | 亚洲一二区 | 久一久久 | 米奇影视第四色 | 久久91av| 国产成人精品一区二 | 国产91大片 | 四虎在线免费视频 | 久久大香 | 日韩一区电影 | 日韩人妻精品一区二区 | 亚洲成人自拍偷拍 | 亚洲一区二区三区麻豆 | 亚洲爆乳无码精品aaa片蜜桃 | 中国黄色片视频 | 中国黄色三级视频 | 一级黄片毛片 | 亚洲精品一区二区三区四区五区 | 99久久久无码国产精品 | 另类天堂av | 精品少妇一区二区三区免费观 | 深夜在线网站 | 成人性生活免费看 | 夜夜高潮夜夜爽国产伦精品 | 日产亚洲一区二区三区 | 男人天堂亚洲天堂 | 蜜桃av色偷偷av老熟女 | 人人射人人爽 | 91天天操 | 久久综合精品国产二区无码不卡 | 国产成人精品一区二区三区无码熬 | 亚洲一区二区偷拍 | 福利视频三区 | 女女百合高h喷汁呻吟玩具 www.亚洲一区 | 欧美四级在线观看 | 国产99在线视频 | 麻豆成人在线观看 | 视频在线播 | 国产精品电影院 | 亚洲成人少妇 | 亚洲视频一区二区三区在线观看 | 美女色网站 | 中文字幕第 | 日本人妻熟妇久久久久久 | 欧美男人天堂 | 国产激情福利 | 中文字幕一区二区三区四区视频 | 国产又粗又硬又长又爽的演员 | 日本另类视频 | 免费在线播放毛片 | 亚洲成人精品久久久 | wwwxx欧美| 天天色综网 | 日韩欧美中文字幕在线视频 | 午夜影院视频 | 在线麻豆av |