1. 程式人生 > 其它 >Git學習筆記(詳細)

Git學習筆記(詳細)

https://gitee.com/all-about-git git大全 常用命令參考

概述

  • 官網:https://git-scm.com/
  • Git是一個免費的、開源的分散式版本控制系統
  • 程式碼託管中心(遠端庫):區域網GitLab、網際網路GitHub、碼雲Gitee

安裝Git

  • 官網下載,直接預設安裝即可(儘量不要修改路徑),滑鼠右鍵出現Git Bash Here即安裝成功。
  • 檢視版本:git bash 裡面執行git --version
  • git bash很卡,清理windows臨時目錄可以解決:C:\Users\Administrator\AppData\Local\Temp

常用命令

  • 檢視所有命令git --help
  • 檢視某個命令的幫助文件git add --help, 會出現網頁的文件供檢視
# 設定使用者簽名
$ git config --global user.name xxx
$ git config --global user.email [email protected]

# 檢查配置
$ cat ~/.gitconfig

# 初始化本地庫 將當前目錄變成一個git倉庫 會生成一個.git目錄
$ git init

# 檢視狀態
$ git status

# 新增修改到暫存區(新檔案、修改檔案、刪除檔案都要add到stage)
$ git add hello.txt

# 刪除暫存區裡的檔案
$ git rm --cached hello.txt

# 提交到本地庫 -m說明 不寫也會開啟一個編輯器讓寫
$ git commit -m "my first commit" hello.txt		# 或者git commit hello.txt -m "comment"
$ git commit -m "my first commit"				# 提交所有暫存區的修改
$ git commit -am "hot fix first commit "		# 相當於add + commit 自動提交所有修改到暫存區, 並提交到本地庫
# 檢視版本日誌
$ git reflog  # 引用日誌, 記錄所有版本的版本號, 包括回滾, 精簡版
$ git log     # 檢視詳細日誌(提交作者和提交日期), 只有當前版本和以前的版本資訊
$ git log --pretty=oneline # 在一行內顯示

# 版本穿梭, 移動的是head指標, master分支 -> head指標 -> 具體的版本
$ git reset --hard xxxxxxx	# 根據git reflog中的版本號進行穿梭版本
$ git reset --hard HEAD^	# ^^表示回退兩個版本,HEAD~100表示回退100個版本

分支管理

$ git branch --help	# 檢視所有branch命令
$ git branch		# 檢視所有分支 *號表示當前分支
$ git branch -v		# 檢視所有分支
$ git branch hot-fix	# 建立分支hot-fix
$ git check hot-fix		# 切換到分支hot-fix
$ git merge hot-fix		# 將hot-fix分支合併到當前分支 如果兩個分支同時修改了同一個檔案會有衝突 當前狀態會在MERGING狀態 此時需要編輯衝突的檔案 其中會標出當前分支修改的部分 hot-fix分支修改的部分 修改後再提交
$ git branch -d hot-fix		# 刪除分支, 需要保證該分支的內容已經合併到它的HEAD版本的分支

團隊協作:

  • 團隊內協作,一個遠端庫即可,需要建立者加入許可權,開發者clone程式碼到本地庫,修改後push,其他成員pull即可
  • 跨團隊協作,fork別的遠端庫,修改後push,發起pull request請求遠端庫拉取自己修改後的程式碼,稽核通過會merge到他們的遠端庫裡
    公共庫都可以clone,不需要驗證,首先需要在github上建立遠端倉庫git-demo,可以在github上邀請協作
    ssh免密登入
# 由於本地git倉庫和遠端git倉庫是通過SSH加密的,所以需要配置ssh,首先本地生成ssh的公鑰和私鑰,將公鑰配置到github上,配置了ssh免密登入才可以使用[email protected]:YourName/xxx.git,否則只能使用https://github.com/YourName/xxx.git,且需要驗證
$ ssh-keygen -t rsa -C [email protected]		# 直接回車,在使用者目錄下會生成.ssh目錄,裡面有公鑰和私鑰

團隊內協作

####已有本地倉庫,在github上建立倉庫後,將本地倉庫同步到遠端庫
$ git remote add ori https://github.com/bingmous/git-demo.git	# 新增遠端庫 git remote add 別名 地址(遠端倉庫的地址)
$ git remote add origin https://gitee.com/bingmous/git-demo.git		# gitee 注意ori只是一個別名
$ git remote -v		# 檢視遠端庫,會有fetch和push兩個 -v表示詳細
$ git push -u ori master	# 推送當前庫到遠端庫(第一次推送)-u使用ori作為上游
$ git pull origin master	# 拉取最新程式碼

####直接從遠端庫clone
$ git clone https://gitee.com/bingmous/git-demo.git # clone做了三件事 拉取程式碼 初始化本地倉庫 建立遠端庫別名(預設為origin)

跨團隊協作

  • fork一下,會在自己的遠端庫裡多一個fork的庫
  • 修改程式碼後,提交,並建立pull request,傳送pull request,在對方的倉庫下就可以看到你的pull request
  • 對方看到pull request後可以看到修改的程式碼,並與自己的程式碼合併