1. 程式人生 > 其它 >Git 使用入門

Git 使用入門

參考

git 官網 book

git 官網 api

Git分支管理策略

Git 常用命令大全

Win7 git cmd 中文亂碼 (最新終極解決辦法)

git 使用場景

  • git 安裝

  • github、gitee 上拉取專案(倉庫)

  • 本地專案同步到 gitee 實現多臺裝置間的同步(類似映像筆記功能,github/gitee 操作都類似,gitee訪問流暢些不用考慮網路問題)

  • git 建立分支實現不同進度開發 + 多人協同開發

git安裝

git官網 下載對應的安裝包,使用預設安裝配置,一路next完成安裝。

github、gitee 上拉取專案(倉庫)

在安裝好git之後,就可以通過git工具下載 github/gitee 遠端倉庫上的專案。例如:需要的第三方庫,想要參考學習的專案

  • 倉庫主頁複製 git clone 地址
  • 在本地資料夾右鍵 git bash here --> 輸入克隆命令(回車執行命令) --> 等待克隆完成 --> 當前資料夾會建立一個專案名的資料夾 --> 專案克隆成功。也可以使用 cmd 命令列 cd 到指定的目錄,執行 git clone https://gitee.com/springff/java-note.git 命令。

git同步

本地專案同步到 gitee 實現多臺裝置間的同步

在工作電腦、家用電腦上實現程式碼同步,筆記同步。和映像筆記、百度雲工具型別可以在A裝置上訪問到B裝置做的更改,只是這些工具是自動同步,git 本地 + git 遠端 是手動實現(更靈活)。

客戶端A

  • 在 github/gitee 網站上建立空專案,獲取到時候上傳(push)的地址
  • 將本地工程新增到本地的 git倉庫:add --> commit
  • 將本地倉庫同步到遠端倉庫

客戶端B

  • 直接從遠端倉庫的 clone 專案到本地

同步

  • 無論是客戶端A還是客戶端B,修改之前都建議先從遠端倉庫拉取內容到本地,完成更新(避擴音交時發生衝突)。
  • 客戶端修改之後,將修改的內容提交到遠端倉庫

git 分支

建立分支

git gui 選中倉庫目錄直接建立 repository , 預設就是 master 分支

建立開發分支 devlelop,並且將切換到 develop:

git checkout -b develop master

切換到主分支:

git checkout master
# 切換到開發分支
git checkout develop 

從本地倉庫 clone

注意 clone 是將整個專案拷貝,所有的分支版本都會被拷貝下來

參考:git 克隆本地倉庫

# cd 到源倉庫, . 表示當前目錄, ../copy 表示指定的目錄
$ git clone -l -s -n . ../copy
$ cd ../copy
# 檢視分支
$ git show-branch

develop 分支合併到 master 分支

拷貝 master 分支最新的程式碼

版本控制忽略

參考:

# 將已經新增到版本控制的檔案從版本控制中刪除,但是並不刪除檔案本身
# 將要忽略的檔案新增到 .gitignore 檔案中,然後執行 git rm --cached命令(執行rm命令前最好備份整個 git 專案)
$ git rm --cached filename

git 暫存分支上的修改

參考:git stash 用法總結和注意點

問題:

本地:分支切換之前的修改是否需要提交,還是隻需要 staged changes 狀態就可以?

無論是 changs not staged 還是 staged changes 狀態都不行,切換分支之前需要在當前分支修改提交,然後再切換分支,這樣在分支A上的修改就不會影響到分支B,但是這樣不方便

解決方案:

使用 git stash 命令存檔當前修改,切換到目標分支完成臨時修改,修改完成後,切換回正在開發分支載入存檔((不想進行add 和commit)。

git stash save "save message"  # 將當前的狀態存檔,存檔後 git status 就會發現沒有更改
git stash list # 檢視git下所有存檔,注意是棧結構,最新的存檔在最前面
git stash apply stash@{0} # 將存檔還原到當前分支(注意檢查當前分支)
git stash drop stash@{0} # 刪除存檔

注意:

  • 只有 changes not staged 狀態下的檔案才會被存檔, untraked files (沒有被新增到 git 狀態管理的檔案不會被存檔)

git 中文亂碼

# 一鍵配置git中文亂碼
git config --global core.autocrlf false; git config --global core.quotepath false; git config --global gui.encoding utf-8; git config --global i18n.commit.encoding utf-8; git config --global i18n.logoutputencoding utf-8 ; export LESSCHARSET=utf-8