ssh方式git clone失敗
報錯提示
Could not read from remote repository.
Please make sure you have the correct access rights
報錯原因
解決辦法——重新添加SSH key
- ssh-keygen -t rsa -C "username" (注:username為你git上的用戶名)
- Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\灝忛┈/.ssh/id_rsa): 直接回車
- C:\Users\灝忛┈/.ssh/id_rsa already exists.
Overwrite (y/n)? y 輸入y
- Enter same passphrase again: 直接回車
- Your identification has been saved in C:\Users\灝忛┈/.ssh/id_rsa. 私鑰保存的地址
Your public key has been saved in C:\Users\灝忛┈/.ssh/id_rsa.pub. 公鑰保存地址
- 根據(jù)路徑找到公鑰犀填,將公鑰添加到Git上
git pull失敻庋场(一)
報錯提示
Your local changes to the following files would be overwritten by merge:
報錯原因
其他人修改了該文件提交到版本庫中首有,而我本地也修改了該文件敲才,致使拉去代碼的時候發(fā)生沖突
解決辦法——貯存更改
依次進行如下操作
git stash 將工作區(qū)恢復到上次提交的內(nèi)容溺职,同時備份本地所做的修
git pull 拉取
git stash pop 彈出自己最近保存的內(nèi)容
查看對應文件 解決沖突
git pull失斄埂(二)
報錯提示
Pulling is not possible because you have unmerged files.
報錯原因
修改的文件未提交
這個錯誤其實是這樣子的——其實我之前已經(jīng)pull過代碼了试吁,然后出現(xiàn)了沖突霍弹,解決沖突之后萍倡,我想再pull一下時報的錯身弊,后來我才知道,解決掉沖突之后是需要再次commit的
解決辦法——提交到本地
git add . 嗯是的列敲,這里 commit 前也需要先 add 一下
git commit -m "獲取新的代碼"
git pull
git push失敗
報錯提示
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
報錯原因
原因一:github上沒有添加最新的公鑰
原因二:網(wǎng)絡未連接
原因一解決辦法——配置公鑰
1.找到公鑰打開阱佛,并復制其內(nèi)容
2.添加公鑰到github
說一下為什么會這樣,因為github和gitlab是共用同一個公鑰和私鑰戴而,在做公司項目的時候凑术,我clone失敗(上面第一個錯誤)時填硕,重新配置了公鑰和私鑰麦萤,所以此時我的github上沒有我最新的公鑰,導致我無法push
原因二解決辦法——連接網(wǎng)絡
1.網(wǎng)線松動
2.掉出公司內(nèi)網(wǎng)扁眯,需要重新登錄
3.WiFi沒網(wǎng)
撤銷對文件的修改
描述
修改了一個復雜的index.vue文件壮莹,修改之后覺得自己寫得亂糟糟的,沒有一絲頭緒姻檀,但這個修改文件未提交命满,我想恢復到它最開始的樣子。
解決辦法
運行命令 git status 獲取到我們這個文件的路徑
git checkout -- 文件完整路徑(好像不加--這兩個橫線也能使)
然后關(guān)閉這個文件在打開就好了 在提醒你是否保存修改切記不要保存
這是一個非常危險的命令绣版,執(zhí)行此操作后git會用最近的commit覆蓋掉整個文件胶台。 除非你確實清楚不想要對那個文件的本地修改了,否則請不要使用這個命令杂抽。
自己的代碼被pull下來的代碼覆蓋
描述
自己的代碼剛剛提交诈唬,同事然后把我的代碼拉下來之后也提交了,然后我再次把代碼重新pull下來缩麸,發(fā)現(xiàn)自己剛剛寫的代碼全沒了(備注:我合同寫的同一個文件)
解決辦法(一)
git log 找到最近一次提交的commit編碼
git reset --hard 復制的commit編碼
然后關(guān)閉這個文件在打開就好了 在提醒你是否保存修改切記不要保存
解決辦法(二)
ctrl + z
使用這個辦法是必須要知道铸磅,自己改動過哪些文件,并且編輯器未被關(guān)閉過(我當時編輯器剛好卡了杭朱,然后重啟了一下編輯器.....)
只想拉取遠端代碼 不想commit
描述
自己的代碼只寫了一丁點阅仔,旁邊的同事說他提交了,叫我pull一下弧械,因為沒寫什么東西八酒,所以不想commit
異想天開的嘗試
當時我就想,可不可以直接pull刃唐,結(jié)果當然是不行啦羞迷,git會給你報如下的錯誤
our local changes to the following files would be overwritten by merge:
解決辦法
git stash 暫存自己的打碼
git pull 拉取代碼
git stash pop 彈出暫存
想要回到pull之前的狀態(tài)
問題描述
commit之后界轩,把代碼pull下來,出現(xiàn)很多沖突闭树,然后想回到pull之前的狀態(tài)耸棒,將代碼格式化之后再pull
解決辦法
git merge --abort 回到?jīng)_突之前的狀態(tài)
git merge --abort將會拋棄合并過程并且嘗試重建合并前的狀態(tài)。但是报辱,當合并開始時如果存在未commit的文件与殃,git merge --abort在某些情況下將無法重現(xiàn)合并前的狀態(tài)。(特別是這些未commit的文件在合并的過程中將會被修改時)
查看自己的commit記錄
描述
公司要求記錄自己每天做了什么碍现,想通過查看一下自己的commit記錄來寫日志幅疼,
解決辦法
git log 此方法有缺陷,只能展示最近一次push時的commit記錄
最后昼接,只有在GitLab上的歷史看了
git免密操作
問題描述
最開始到新公司接手代碼時爽篷,第一時間就是配置ssh,一頓操作之后慢睡,發(fā)現(xiàn)不管用逐工,后來才知道公司根本就沒有噢誒之ssh這種方式。然后就一直采用http的哪一種方式拉去代碼漂辐,但是使用這種方式的話每次和遠程倉庫打交道時都需要輸入密碼泪喊,后來真的嫌輸入密碼太煩人了,就去百度看看有沒有解決辦法髓涯,一查還真有(之前一直以為http方式是必須要輸入密碼的袒啼,所以沒有第一時間去百度)
解決辦法
git config --global credential.helper store
復制代碼
是用哪個該命令之后,仍需再輸入一次命令纬纪,之后就再也不需要輸入密碼了
取消merge
問題描述
在合并分支時蚓再,將要merge的分支陰差陽錯merge到了master分支上,原本是要merge到1124生產(chǎn)包上包各,現(xiàn)在要將master分支回退到最開始的樣子摘仅。
解決辦法
1.切換到我們要恢復的分支(我這里是master分支)
git co master
2. 查看歷史版本號,找到要恢復的版本號
git reflog
3.回退到之前的版本(我的是60a4a3f
git reset --hard 60a4a3f
另外回退之后reflog下面的記錄也會消失问畅,這都是我自己記錄的時候才發(fā)現(xiàn)找不到自己剛才使用的版本號了
push分支代碼
問題描述
自己在本地新建了一個遠程沒有的分支娃属,并完成了開發(fā),此時想要將代碼推送到遠程按声,不能直接使用git push
命令[]
解決辦法
這個問題的實質(zhì)是我們所在的分支沒有遠程分支建立聯(lián)系膳犹,當我們使用這個命令時恬吕,git不知道把我們的代碼推送到那一個分支签则,所以會出現(xiàn)這種情況,git pull
也是如此
方案一
git push origin <originBranch>
originBranch為遠程分支
該方式能將分支推送到指定的分支铐料,若遠程不存在則會自動創(chuàng)建該分支渐裂,但之后的推送仍需指定遠程分支豺旬,不能直接使用git push
推送到遠程
方案二
git push --set-upstream origin <originBranch>
originBranch為遠程分支
該方式能將分支推送到指定的分支并建立關(guān)系,若遠程不存在則會自動創(chuàng)建該分支柒凉,之后在此分支可以直接使用git push
命令族阅,會默認推送到與我們建立關(guān)系的遠程分支。
方案三
git branch --set-upstream-to=origin/<originBranch> <localBranch>
localBranch本地分支 originBranch為遠程分支
與遠程分支建立關(guān)系膝捞,若遠程不存在則會自動創(chuàng)建該分支
git commit --amend
問題描述
上一次提交忘記刪除console坦刀,刪除console之后又不想添加新的提交,但是第一次使用這個命令又有點懵蔬咬,不知道該怎么操作....[]
解決辦法
-
輸入該命令之后會彈出如下界面
image.png 因為我們只是修正我們的提交鲤遥,這里并沒有什么其他操作,我們先按esc退出編輯模式林艘,然后輸入:wq保存并退出就完成了
最后你可以輸入git log查看一下我們的commit記錄
代碼寫錯分支8悄巍!
問題描述
基于同事的分支狐援,進行一些埋點的操作钢坦,擼代碼時,自己忘了切分支了啥酱,將自己的代碼寫在同事的分支上了爹凹,此時自己又沒有提交,怎么辦懈涛?逛万?
解決辦法
- 先將代碼暫存
git stash
- 遷出一個分支 git checkout -b
- 彈出自己暫存的代碼 git stash pop
修改分支名稱
問題描述
解決辦法
git branch -m oldName newName
oldName
原始分支名
newName
當前分支名
如何將本地倉庫放在git上面
問題描述
自己先在本地新建了一個git倉庫批钠,進行一系列的學習宇植,現(xiàn)在想將自己的本地倉庫上傳到github上,又想保存自己的提交記錄埋心。何解指郁?
解決辦法
- 現(xiàn)在github上新建一個遠程倉庫
- 在本地倉庫下使用如下命令將兩個倉庫關(guān)聯(lián)起來
git remote add origin <originRepoAddress>
<originRepoAddress>
指的是遠程倉庫的地址,也就是平時我們clone用的那個地址
- 使用如下命令將本地倉庫的所有內(nèi)容推送到遠程倉庫
git push -u origin main
如果使用第三步的命令遇到如下錯誤
這是由于你新創(chuàng)建的那個倉庫里面的README文件不在本地倉庫目錄中拷呆,這時我們可以通過以下命令先將內(nèi)容合并:
git pull --rebase origin main
然后再進行推送
作者:mayoha
鏈接:https://juejin.cn/post/7021044496787832862
來源:稀土掘金
著作權(quán)歸作者所有闲坎。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處茬斧。