git&&sourceTree操作學習

基本操作

  • commit 提交
  • pull 更新代碼
  • push 推送代碼
  • fetch 抓取代碼
  • Branch 新建分支
  • merge 合併代碼
  • Stash 暫存代碼狀態
  • log 輸出歷史提交
  • reset --hard 回退版本
  • reflog 輸出git命令的歷史

git add 文件名

  • 把文件添加到倉庫

git commit -m "説明",提交本次修改

git status 用於查看工作區狀態

git diff ,用於查看被更改的文件修改前後的區別

git log ,命令可以查看提交歷史

git log --pretty=oneline ,在一行內打印log

git reset --hard HEAD^,回退到上一個版本

  • 回退一個版本 HEAD/兩個版本HEAD^/指定版本HEAD~n
  • --hard 版本號,可以用於到達任意版本
  • 注:~n與^為尋根操作

git reflog ,用於輸出git的歷史命令

  • 通過歷史命令可以防止因關閉命令行導致忘記git版本號

工作區和暫存區

  1. 工作區
    電腦裏能夠看到的目錄一般指工作區,.git文件夾不算,它是git的版本庫
  2. Git版本庫(.git一般為隱藏文件夾)
  • stage(或者叫index)的暫存區
  • master分支,以及指向master的一個HEAD指針(git版本回退就是根據HEAD指針操作)
  • 工作區-->add操作-->stage暫存區-->commit操作-->(當前)master版本庫
  • git管理的文件修改後/新增文件後都需要先將文件添加到暫存區,然後將暫存區的文件commit提交到當前分支
  1. Changes not staged for commit
    表示git中的文件被改變了
  2. unTracked files
    新建的文件,未被追蹤

管理修改

  1. 為什麼git比其他版本管理工具優秀?
  • git管理並跟蹤的是修改,而非文件
  1. 撤銷修改
  • 撤銷工作區的修改
  • git checkout -- 文件名,可以放棄工作區的修改,如果暫存區有內容則跟暫存區的內容相同,暫存區為空則跟版本庫中的當前分支相同
  • 撤銷暫存區的修改
  • git reset head 撤銷暫存區的修改再撤銷工作區的修改

分支修改

  1. git checkout -b dev
  • 創建新的名為dev的分支,相當於,git branch dev+git checkout dev,
  • Git branch可以創建新的分支,git checkout可以切換分支
  1. git branch
  • 可以查看分支的情況,當前分支前面會有一個*號
  1. git merge dev
  • merge用於分支合併,可以將後續分支合併到當前分支,一般用的是fast_forward,直接把master指向當前dev的提交,快速合併
  1. git branch -d dev
  • 刪除dev分支
  1. git switch -c dev
  • 也可以用於創建分支並切換
  • git switch 用於切換分支,作用和git checkout一樣

SourceTree常見操作

1. 在SourceTree中追蹤分支

  • 用於聯繫本地分支和遠程分支,如果在追蹤分支上進行pull和push操作,它會自動拉取或者推送到相關聯的遠程分支上

2. 在SourceTree中放棄更改

  1. 放棄工作區的更改
  • 當對原文件進行修改後,可以在工作區(workspace)選中修改過的文件,右鍵重置,即可放棄更改,恢復到和本地master分支相同的狀態
  • 也可以右擊重置到提交,可以選擇重置到提交,使被更改的文件重置到某個提交的版本
  • 注意:在SourceTree裏面的
  1. 修改git分支的名稱
  • git branch -m oldName newName

3.在SourceTree中合併分支

  • 根據日誌合併
  • 選中某個提交->選中立即提交合並(如果沒有衝突的情況下)->確定,如果有衝突則解決衝突,沒有衝突則合併完成
  • 合併已抓取
  • 合併某個已經被抓取到分支的全部內容,用於較多內容的合併

4.解決合併衝突

  • 打開外部合併工具
  • 使用我的內容解決衝突
  • 使用他的內容解決衝突

5.分支的回退

  • 命令行下直接使用 git reset --hard commit版本號
  • SourceTree模式下,右擊某個提交->將分支重置到這次提交
  1. 軟合併
  2. 混合合併
  3. 強行合併
  • 一般使用軟合併與混合合併,強行合併的話會導致本地的修改全部被丟失

6.git cherry-pick解決“超前m個版本,落後n個版本”的情況

  • 首先使用git log 查看commit記錄,將超前m個版本的commit號記錄下來
  • 使用git reset --hard HEAD~m,將git回退到m個版本之前
  • 拉取最新的n個版本
  • 執行 git cherry-pick commit[0]..commit[m],將超前的m個版本合併到當前最新版本中,(commit[ ]代表的是commit版本號)

7.基礎-將本地repository與遠程repository關聯

  • (本地repository如果生成git文件可跳過這步)
    進入本地文件目錄,執行 git init
  • 添加遠程主機
    git remote add origin https://.....
  • (本地repository如果已commit可跳過這步)
    git add .
    git commit -m "initial commit"
  • 將本地內容上傳到remote
    git push -u origin master #-u是指定origin為默認主機 master是本地分支名稱

8.將分支改名

  • 本地分支改名
    git branch -m Nowname NewName

9.創建新分支並關聯遠程分支

  • git checkout -b newBranch
  • git push origin newBranch