1. 程式人生 > >【Git】命令列操作

【Git】命令列操作

Git 命令列操作 # 1 本地庫初始化 `git init`:初始化本地倉庫 效果 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114123554871-1157486264.png) 注意:.git目錄中存放的是本地庫相關的子目錄和檔案,不要刪除,也不要胡亂修改。 # 2 設定簽名 形式: ``` 使用者名稱:tom Email地址:[email protected] ``` 作用:區分不同開發人員的身份 辨析:這裡設定的簽名和登入遠端庫(程式碼託管中心)的賬號、密碼沒有任何關係。 命令 - 專案級別/倉庫級別:僅在當前本地庫範圍內有效 - `git config user.nametom_pro` - `git config [email protected]` - 資訊儲存位置:./.git/config檔案 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114123811191-1202262005.png) - 系統使用者級別:登入當前作業系統的使用者範圍 - `git config --global user.nametom_glb` - `git config --global [email protected]` - 資訊儲存位置:~/.gitconfig檔案(~代表根目錄) ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114123908661-685600167.png) - 級別優先順序 - 就近原則:專案級別優先於系統使用者級別,二者都有時採用專案級別的簽名 - 如果只有系統使用者級別的簽名,就以系統使用者級別的簽名為準 - 二者都沒有不允許 # 3 基本操作 ### 3. 1 狀態檢視 `git status`:檢視工作區、暫存區狀態 ## 3. 2 新增 `git add [filename]`:將工作區的“新建/修改”新增到暫存區 - filename:為欲新增的檔名,`*`代表當前目錄的所有檔案。 ##3. 3 提交 `git commit -m "commit message" [filename]`:將暫存區的內容提交到本地庫 ##3. 4 檢視歷史記錄 `git log`:檢視歷史記錄,顯示完整的歷史記錄資訊 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114124230364-1334255215.png) 多屏顯示控制方式: - 空格:向下翻頁 - b:向上翻頁 - q:退出 --- 上面這種方法顯示的歷史記錄可能不太好看:我們可以採用以下方法進行簡化歷史記錄的顯示: `git log --pretty=oneline`:我們可以使用此命令讓歷史記錄放在一行上 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114124313824-1748443373.png) `git log --oneline`:縮短了雜湊值的顯示,只顯示後面7位 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114124345034-930968506.png) 上面的幾種方法只能顯示過去與現在 --- 下面這個命令可以顯示過去、現在和未來 `git reflog`:這種方式可以看到我們所有的歷史記錄,包括回退前、回退後、過去、現在、將來。 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114124407095-976992583.png) HEAD@{移動到當前版本需要多少步} ## 3. 5 前進後退 本質:使用`git reflog`來顯示所有歷史記錄 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114124438925-356015770.png) 可以使用以下方法來移動HEAD指標 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114160308234-547129877.png) ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114160420797-763463914.png) 基於索引值操作[推薦] - `git reset --hard [區域性索引值]` - `git reset --hard a6ace91` 使用`^`符號:只能後退 - `git reset --hardHEAD^`:一個`^`表示後退一步,n個表示後退n步 使用`~`符號:只能後退 - `git reset --hardHEAD~n`:表示後退n步 ##3. 6 reset 命令的三個引數對比 原本本地庫、暫存區、工作區三者版本一致: `--soft`引數 - 僅僅在本地庫移動HEAD指標 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114163125162-2033088849.png) 這裡可以看出,我們的本地庫版本退後了一步,而其他的都沒改變 `--mixed`引數 - 在本地庫移動HEAD指標 - 重置暫存區(重置,即 後退版本) ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114163449384-1287465040.png) `--hard`引數(這個用的最多) - 在本地庫移動HEAD指標 - 重置暫存區 - 重置工作區 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114164141696-11341178.png) ## 3. 7 刪除檔案並找回 前提:刪除前,檔案存在時的狀態提交到了本地庫。 操作:`git reset --hard [指標位置]` - 刪除操作已經提交到本地庫:指標位置指向歷史記錄 - 刪除操作尚未提交到本地庫:指標位置使用HEAD ## 3. 8 比較檔案差異 `git diff [檔名]`:將工作區中的檔案和暫存區進行比較 `git diff [本地庫中歷史版本] [檔名]`:將工作區中的檔案和本地庫歷史記錄比較 `git diff`:不帶檔名比較多個檔案 # 4 分支管理 ## 4. 1 什麼是分支? 在版本控制過程中,使用多條線同時推進多個任務。 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114125332794-1166590624.png) ## 4. 2 分支的好處? - 同時並行推進多個功能開發,提高開發效率 - 各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任何影響。失敗的分支刪除重新開始即可。 ## 4. 3 分支操作 `git branch [分支名]`:建立分支 `git branch -v`:檢視分支 `git checkout [分支名]`:切換分支 合併分支 - 第一步:切換到接受修改的分支(被合併,增加新內容)上 `git checkout [被合併分支名]` - 第二步:執行merge命令 `git merge [有新內容分支名]` 解決衝突 - 衝突的表現 ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114125434971-430239406.png) - 衝突的解決 - 第一步:編輯檔案,刪除特殊符號 - 第二步:把檔案修改到滿意的程度,儲存退出 - 第三步:`git add [檔名]` - 第四步:`git commit -m "日誌資訊"` > 注意:此時commit一定不能帶具體檔名 # 命令列常用操作步驟 ## 情況一:建立自己的專案 ### 1. 建立遠端庫 ![](https://img2020.cnblogs.com/blog/1542615/202008/1542615-20200820224121888-1925364301.png) ![](https://img2020.cnblogs.com/blog/1542615/202008/1542615-20200820224151558-2068709831.png) ### 2. 建立遠端庫地址別名 `git remote -v 檢視當前所有遠端地址別名` `git remote add [別名] [遠端地址]` ![](https://img2020.cnblogs.com/blog/1542615/202008/1542615-20200820224253744-676040282.png) ### 3. 推送 `git push [別名] [分支名]` ![](https://img2020.cnblogs.com/blog/1542615/202008/1542615-20200820224306744-2126735837.png) 推送需要輸入賬號和密碼: ![](https://img2020.cnblogs.com/blog/1542615/202101/1542615-20210114131830756-188865263.png) ## 情況二:克隆別人的專案 ### 1. 克隆遠端倉庫(從無到有) `git clone [遠端地址]` ![](https://img2020.cnblogs.com/blog/1542615/202012/1542615-20201221221650180-1630778760.jpg) 效果 - 完整的把遠端庫下載到本地 - 建立 origin 遠端地址別名 - 初始化本地庫 ## 情況三:更新已有的專案 ### 1. 拉取(從舊到新) - pull=fetch+merge - `git fetch [遠端庫地址別名] [遠端分支名]` - `git merge [遠端庫地址別名/遠端分支名]` - `git pull [遠端庫地址別名] [遠端分支名]`