Git常用命令和常見問(wèn)題

git官網(wǎng)

一、git常用命令

1.常用命令
git clone 地址             // 克隆遠(yuǎn)程倉(cāng)庫(kù)
git clone -b 分支名 地址   // 克隆分支的代碼到本地
git status                // 查看狀態(tài)
git add 文件名            // 將某個(gè)文件存入暫存區(qū)
git add b c              //把b和c存入暫存區(qū)
git add .                // 將所有文件提交到暫存區(qū)
git reset HEAD test.txt   //撤回暫存區(qū)文件到工作區(qū)
git reset .              //撤回所有暫存區(qū)文件到工作區(qū)
git add -p 文件名        // 一個(gè)文件分多次提交
git stash -u -k         // 提交部分文件內(nèi)容 到倉(cāng)庫(kù) 例如本地有3個(gè)文件 a b c 只想提交a b到遠(yuǎn)程倉(cāng)庫(kù) git add a b 然后 git stash -u -k 
                        //再然后git commit -m "備注信息" 然后再push push之后 git stash pop 把之前放入堆棧的c拿出來(lái) 繼續(xù)下一波操作
git commit -m "提交的備注信息"  // 提交到倉(cāng)庫(kù)
//若已經(jīng)有若干文件放入倉(cāng)庫(kù),再次提交可以不用git add和git commit -m "備注信息" 這2步, 直接用
git commit -am "備注信息"      // 將內(nèi)容放至倉(cāng)庫(kù) 也可用git commit -a -m "備注信息"
git branch -d 分支名           // 刪除分支
git log --oneline  //查看提交信息   英文狀態(tài)按 q 取消

 //常用提交步驟,多人合作開發(fā),push之前先commit防止沖突
git add . ==> git commit -m '提交信息'  ==> git push      
2.分支
git branch 分支名       // 新建分支
git branch             // 查看當(dāng)前所有分支
git checkout 分支名    // 檢出分支
git checkout -b 分支名 // 創(chuàng)建并切換分支
git checkout commitId 文件名(文件路徑下的文件名)// 還原這個(gè)文件到對(duì)應(yīng)的commitId的版本
//(例如src/page/attendance/attendanceSum.vue我想把它還原到2個(gè)版本之前 首先git log //src/page/attendance/attendanceSum.vue找到對(duì)應(yīng)想要還原的版本
//復(fù)制版本提交的commitID 然后執(zhí)行g(shù)it checkout commitID src/page/attendance/attendanceSum.vue
//這樣就把a(bǔ)ttendanceSum.vue這個(gè)單個(gè)文件 還原到了對(duì)應(yīng)版本)
git branch -v                  // 查看分支以及提交hash值和commit信息
git merge 分支名               // 把該分支的內(nèi)容合并到現(xiàn)有分支上
git branch -d 分支名           // 刪除分支
git branch -D 分支名           // 強(qiáng)制刪除 若沒有其他分支合并就刪除 d會(huì)提示 D不會(huì)
git branch -m 舊分支名 新分支名 // 修改分支名
git branch -M 舊分支名 新分支名 // 修改分支名 M強(qiáng)制修改 若與其他分支有沖突也會(huì)創(chuàng)建(慎用)
git branch -r                 // 列出遠(yuǎn)程分支(遠(yuǎn)程所有分支名)
git branch -a                 // 查看遠(yuǎn)程分支(列出遠(yuǎn)程分支以及本地分支名)
git fetch                     // 更新remote索引
git push -u origin 分支名      // 將本地分支推送到origin主機(jī),同時(shí)指定origin為默認(rèn)主機(jī),后面就可以不加任何參數(shù)使用git push 也可解決 git建立遠(yuǎn)程分支關(guān)聯(lián)時(shí)出現(xiàn)fatal ... upstram的問(wèn)題
3.遠(yuǎn)程操作
git remote -v                     //顯示所有遠(yuǎn)程倉(cāng)庫(kù)
git remote show <remote>          //顯示某個(gè)遠(yuǎn)程倉(cāng)庫(kù)信息
git remote add <remoteName> <url> //添加一個(gè)新的遠(yuǎn)程倉(cāng)庫(kù),并命名
git fetch <remote>                //下載遠(yuǎn)程倉(cāng)庫(kù)的所有變動(dòng)
git pull <remote> <branch>        //下載遠(yuǎn)程倉(cāng)庫(kù)的變化,并與本地分支合并
git push <remote> <branch>        //上傳本地指定分支到遠(yuǎn)程倉(cāng)庫(kù)
git push <remote> --force         //強(qiáng)行推送當(dāng)前分支到遠(yuǎn)程倉(cāng)庫(kù),即使有沖突
git push <remote> --all           //推送所有分支到遠(yuǎn)程倉(cāng)庫(kù)
git push --tags                   //上傳所有標(biāo)簽
4.撤回操作
git reset HEAD test.txt      //撤回暫存區(qū)文件到工作區(qū)
git reset .                  //撤回所有暫存區(qū)文件到工作區(qū)
git checkout [file]          //恢復(fù)暫存區(qū)的指定文件到工作區(qū)
git chectout [commit] [file] //恢復(fù)某個(gè)commit的指定文件到暫存區(qū)和工作區(qū)
git rm --cached [file]       //將指定文件從暫存區(qū)刪除,工作區(qū)依然存在,避免提交了
git reset [file]             //重置暫存區(qū)的指定文件,與上一次commit保持一致,但工作區(qū)不變
git reset --hard             //重置工作區(qū)與暫存區(qū),與上一次commit保持一致
git reset [commit]           //重置當(dāng)前分支的指針為指定commit,同時(shí)重置暫存區(qū),工作區(qū)不變
git reset --hard [commit]    //重置當(dāng)前分支的hard為指定commit,同時(shí)重置暫存區(qū)與工作區(qū),與指定commit一致
//如:git reset --hard a1d566d      git reflog查出要回退到merge之前的版本號(hào)
5.對(duì)比工作區(qū),暫存區(qū),倉(cāng)庫(kù)的差異
git diff                    // 查看變更 工作區(qū)與暫存區(qū)的差異比對(duì)
git diff --cached           // 暫存區(qū)與提交版本的差異
git diff HEAD               // 工作區(qū)與倉(cāng)庫(kù)中最后一次提交版本的差別
git diff 版本哈希值 版本哈希值 // 查看這2個(gè)版本哈希之間的區(qū)別
或者 git diff HEAD~數(shù)字 HEAD~數(shù)字
 
git tag tt HEAD~4          //給倒數(shù)第5次提交打一個(gè)tag tag名字是tt
git diff tt                // 就是倒數(shù)第5個(gè)版本與第一個(gè)版本之間的差異
git diff --cached tt       //暫存區(qū)與倒數(shù)第5個(gè)版本之間的比對(duì)
6.查看提交信息
git log --oneline  //查看提交信息   英文狀態(tài)按 q 取消
git log            //自己提交時(shí)間記錄
git reflog         //查出要回退到merge之前的版本號(hào)
git show HEAD      // 查看最后一次提交修改的詳細(xì)信息 也可以用git show 哈希值 查看對(duì)應(yīng)的內(nèi)容
git show HEAD^     // 查看倒數(shù)第二次的提交修改詳細(xì)信息
git show HEAD^^ 或者git show HEAD~2 //查看前2次變更
git show HEAD 或 git show 哈希值 或者git show tag(標(biāo)簽名) //都可以查看最近一次提交的詳細(xì)信息
7.git忽視文件

在倉(cāng)庫(kù)根目錄創(chuàng)建一個(gè) .gitignore文件

(1)node_modules    //忽視指定文件
(2)css/index.js    //忽視指定文件夾中的指定文件
(3)css/*.js        //忽視css文件夾下的所有js文件
(4)css             //忽視整個(gè)文件夾

8.創(chuàng)建文件命令
touch a         // 創(chuàng)建一個(gè)a文件,自定義文件類型  a.html
echo 1234 >> a // 把1234這個(gè)內(nèi)容放入a文件
cat a         // 打開a文件 讀取出a文件中的內(nèi)容
mkdir test   // 創(chuàng)建test文件夾
rm 文件名   // 刪除文件
pwd       // 打印當(dāng)前工作路徑
9.文件信息
ls          // 查看當(dāng)前路徑下面的所有文件名
ls 文件夾名 // 查看對(duì)應(yīng)文件夾中的內(nèi)容
ls -l     // 拉出最近git提交記錄以及對(duì)應(yīng)修改的文件名
ls -l -a // 拉出最近git提交記錄以及對(duì)應(yīng)修改的文件名,隱藏的文件也會(huì)顯示
10.cd快速切換路徑
cd ~          // 將工作路徑快速切換到root
cd -          // 將工作路徑切換到上一狀態(tài)
cd ../        // 切回到上一個(gè)工作路徑
cd 文件夾名   // 進(jìn)入某個(gè)目錄
cd /         // 進(jìn)入根目錄
Tips常用名詞:

常用名詞
Workspace:工作區(qū)
Index / Stage:暫存區(qū)
Repository:倉(cāng)庫(kù)區(qū)(或本地倉(cāng)庫(kù))
Remote:遠(yuǎn)程倉(cāng)庫(kù)
功能(feature)分支
預(yù)發(fā)布(release)分支
修補(bǔ)bug(fixbug)分支

二、常見問(wèn)題

問(wèn)題1:[暫存區(qū)無(wú)內(nèi)容]
E:\QC\review_vue\shop_admin>git commit -m '測(cè)試提交'
nothing to commit, working tree clean
解決:

錯(cuò)誤的原因就是:暫存區(qū)沒東西或者東西都提交到版本庫(kù)當(dāng)前分支

工作區(qū):也就是本地文件的區(qū)域
版本庫(kù)中暫存區(qū):就是使用git add命令之后,本地工作區(qū)的文件加到暫存區(qū)
版本庫(kù)當(dāng)前分支:也就是使用 git commit 之后,暫存區(qū)的東西到版本庫(kù)當(dāng)前分支。

問(wèn)題2:[換行問(wèn)題]
E:\QC\review_vue\shop_admin>git add .
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory
解決2:

你是 Windows 程序員,且正在開發(fā)僅運(yùn)行在 Windows 上的項(xiàng)目,可以設(shè)置 false 取消此功能,把回車保留在版本庫(kù)中:

//提交檢出均不轉(zhuǎn)換
$ git config --global core.autocrlf false
問(wèn)題3:[遠(yuǎn)程無(wú)倉(cāng)庫(kù)]
E:\QC\review_vue\shop_admin>git push
fatal: No configured push destination.
Either specify the URL from the command-line or configure a remote repository using

    git remote add <name> <url>

and then push using the remote name

    git push <name>
解決3:

因?yàn)闆]有遠(yuǎn)程倉(cāng)庫(kù),所以沒法提交,需在碼云中創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)
1.創(chuàng)建完后,執(zhí)行添加命令git remote add <name> <url>
<name>:自定義變量名origin
<url>:創(chuàng)建倉(cāng)庫(kù)后的SSH地址

git remote add origin git@gitee.com:XXXXX/shoping_admin.git

2.再次提交到遠(yuǎn)程倉(cāng)庫(kù)

git push -u origin master

tips:不用每次提價(jià)都需要加上-u,只要第一次提交需要加上-u,表示提交的內(nèi)容和當(dāng)前的遠(yuǎn)程倉(cāng)庫(kù)綁定,以后提交只需要命令git push就可以了

問(wèn)題4 [缺少known_hosts文件]
E:\QC\review_vue\shop_admin>git push -u origin master
The authenticity of host 'gitee.com (212.xx.xx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
解決4:

在新生成密鑰之后,在.ssh文件夾(之前的文章有提到過(guò))中少了一個(gè)known_hosts文件,本來(lái)密鑰文件應(yīng)該是三個(gè),現(xiàn)在是兩個(gè),便報(bào)了這樣的錯(cuò)誤,此時(shí)選擇yes回車之后,便可,同時(shí)生成了缺少了的known_hosts文件:

問(wèn)題5 [push、clone無(wú)權(quán)限,無(wú)存儲(chǔ)ssh密鑰]

clone或者push出現(xiàn)沒有訪問(wèn)權(quán)限情況

git@gitee.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
解決5

出現(xiàn)改問(wèn)題的原因是git服務(wù)器沒有存儲(chǔ)本地ssh密鑰。
1.步驟一、打開終端按如下命令輸入自己碼云賬號(hào)來(lái)生成 sshkey:

ssh-keygen -t rsa -C "xxxxx@xxxxx.com" 

輸入提示完成后三次回車,看到類似下面圖形表示已經(jīng)生成 ssh key。
| . . |
|o o * . . ...|
|E oo o . o.. |
| B . o S . ... |
| .B=+%. |
+----[SHA256]-----+

2.步驟二:輸入如下命令可查看已經(jīng)生成的ssh key(若提示cat不是內(nèi)部命令,可關(guān)掉終端,再次輸入查看)

cat ~/.ssh/id_rsa.pub

具體步驟可以參考:碼云生成/添加SSH公鑰步驟
若上面方法是依然查看不了已生成的ssh key,可以直接找到文件目錄就是:C:\Users\Administrator/.ssh/id_rsa,用記事本打開id_rsa.pub復(fù)制里面的內(nèi)容到碼云添加公鑰處即可。
可能有的目錄不在這,可以在命令行直接輸入ssh-keygen.exe回車鍵后也可看到文件位置。
id_rsa:私鑰,放在自己本地電腦就好
id_rsa.pub:公鑰,復(fù)制里面內(nèi)容給到碼云或者GitHub的SSH公鑰處

問(wèn)題6 [提交遠(yuǎn)程無(wú)分支]
E:\QC\review_vue\shop_admin>git push
fatal: The current branch chuang has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin chuang
解決6

出現(xiàn)上述問(wèn)題,說(shuō)明在本地新建了一個(gè)分支,遠(yuǎn)程并沒有感知到本地新建的這個(gè)分支,提示運(yùn)行 git push --set-upstream origin chuang與遠(yuǎn)程倉(cāng)庫(kù)建立關(guān)聯(lián),運(yùn)行后即可通過(guò)git push推送成功。

問(wèn)題7 [提交合并需解釋]

Please enter a commit message to explain why this merge is necessary
Please enter a commit message to explain why this merge is necessary.**
請(qǐng)輸入提交消息來(lái)解釋為什么這種合并是必要的

image.png
解決7

git 在pull或者合并分支的時(shí)候有時(shí)會(huì)遇到這個(gè)界面??梢圆还?直接下面3,4步),如果要輸入解釋的話就需要:
1.按鍵盤字母 i 進(jìn)入insert模式
2.修改最上面那行黃色合并信息,可以不修改
3.按鍵盤左上角"Esc"
4.輸入":wq",注意是冒號(hào)+wq,按回車鍵即可

問(wèn)題8: remote origin already exists錯(cuò)誤解決辦法
E:\QC\H5\full_screen_plugin>git remote add origin git@gitee.com:three_cases_demo/full_screen_page.git
fatal: remote origin already exists.
解決8 (報(bào)錯(cuò)遠(yuǎn)程起源已經(jīng)存在 )

1.先刪除遠(yuǎn)程 Git 倉(cāng)庫(kù)

$ git remote rm origin

2.再重新添加遠(yuǎn)程 Git 倉(cāng)庫(kù)即可

$ git remote add origin git@github.com:xxxxxxxxxxxxxxxxxx

【后續(xù)會(huì)繼續(xù)補(bǔ)充】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、基本概念: 注:對(duì)于git的分布式概念及其優(yōu)點(diǎn),不重復(fù)說(shuō)明,自己百度或谷歌。本文中涉及到指令前面有$的,在cm...
    大廠offer閱讀 1,559評(píng)論 0 3
  • 一 Git配置和倉(cāng)庫(kù)初始化 下面會(huì)介紹Git的使用,每個(gè)小節(jié)里會(huì)講解各個(gè)功能在命令行中的實(shí)現(xiàn)方式,并在每小節(jié)的最后...
    Happioo閱讀 3,655評(píng)論 0 5
  • 簡(jiǎn)介 ??git有四個(gè)工作區(qū)域,分別是:工作目錄(Workspace)、暫存區(qū)(Index/Stage)、本地倉(cāng)庫(kù)...
    gybguohao閱讀 21,357評(píng)論 4 21
  • 該篇文章為學(xué)習(xí)廖雪峰git教程的總結(jié),具體可移步廖雪峰老師git教程網(wǎng)站 Git介紹 Git是分布式版本控制系統(tǒng)。...
    Pig_deng飼養(yǎng)員閱讀 1,067評(píng)論 0 1
  • 我們都渴望成功,在職場(chǎng)上闖出自己的一片天地,升職加薪掙大錢,讓自己和家人過(guò)上更好的生活。畢竟在現(xiàn)在這個(gè)社會(huì)中,沒有...
    聚字成書閱讀 213評(píng)論 0 0

友情鏈接更多精彩內(nèi)容