02.源代碼管理之Git命令的使用

@(〓〓 iOS-實用技術)[代碼管理 Git/SVN]


目錄

  • 02.源代碼管理之Git命令的使用
  • 2.Git命令行演練-個人開發
    • 2.1 如何學習git指令
    • 2.2 初始化創建本地倉庫
    • 2.3 個人開發基本演練
    • 2.4 Git的基本常識
  • 3.Git命令行演練-團隊開發
    • 3.1 共享庫分類
    • 3.2 搭建本地共享庫
    • 3.3 演示團隊多人開發
    • 3.4 Git補充
  • 4.Git常用命令
    • 4.1 查看、添加、提交、刪除、找回,重置修改文件
    • 4.2 查看文件diff
    • 4.3 查看提交記錄
    • 4.4 查看、切換、創建和刪除分支
    • 4.5 Git暫存管理
    • 4.6 Git遠程分支管理
    • 4.7 Git遠程倉庫管理
  • 5.Git資源推薦

2.Git命令行演練-個人開發


2.1 如何學習git指令

  • git help [子命令] 幫助指令

和學習SVN指令是一樣的,只不過git是通過使用指南的形式展示給用戶看(不能編輯的vim編輯器),使用q退出vim編輯器,按空格進入下一頁,ctrl + B 回到上一頁; /關鍵字 進行搜索


2.2 初始化創建本地倉庫

  • 1.創建LocalServer文件夾.用于存放本地倉庫和工作空間.

    • 在終端中使用cd指令進入LocalServer文件夾

      命令: cd /Users/liwx/Desktop/Tmp/Git/LocalServer

  • 2.初始化本地倉庫

    • 描述: 使用以下命令會生成一個.git文件夾(本地代碼倉庫)

      • 作用: .git文件夾是用來管理本地代碼,修改上傳,版本回退.

      命令: git init

  • 3.配置倉庫信息

    • 3.1 配置Git倉庫用戶.假設創建liwx用戶.

      • 作用: 追蹤修改更新記錄.

      命令: git config user.name "liwx"

    • 3.2 配置用戶郵箱

      • 作用: 多人合作開發時, 溝通交流

      命令: git config user.email "1032282633@qq.com"

    • 3.3 查看配置信息(.git -> config打開)

      • 作用: 查看信息是否配置成功

      命令: git config -l

    • 3.4 也可以在.git文件的config文件中查看配置結果

01.查看配置結果.png

  • 創建本地倉庫如圖所示
02.創建本地倉庫.png

2.3 個人開發基本演練


  • 1.創建文件并提交到本地倉庫
    • 1.1 創建main.m

      命令: touch main.m

    • 1.2 添加到stage暫存區

      命令: git add ."

    • 1.3 提交到HEAD指向的分支(HEAD默認執行master主分支)

      命令: git commit -m "創建main.m文件"

    • 操作如圖

03.創建文件并提交到本地倉庫.png

  • 2.修改文件并提交到本地倉庫
    • 2.1 修改main.m文件的內容

    • 2.2 添加到stage暫存區

      命令: git add .

    • 2.3 將修改的文件提交到本地倉庫

      命令: git commit -m "修改了main.m文件"

    • 操作如圖

04.修改文件并提交到本地倉庫.png

  • 3.刪除文件并提交到本地倉庫
    • 3.1 刪除文件并提交

      命令: git rm main.m

    • 3.2 將刪除文件提交到本地倉庫

      命令: git commit -m "刪除了main.m文件"

    • 操作如圖

05.刪除文件并提交到本地倉庫.png

  • 4.日志查看
    • 4.1 查看日志(查看Git的更新日志和40位哈希值版本號)

      命令: git log

    • 4.2 查看日志(查看到Git的更新日志和7位哈希值版本號)

      命令: git reflog

    • 操作如圖

06.git log 日志查看.png
07.git reflog 日志查看.png

  • 5.版本回退
    • 代碼版本回退

      重置到當前版本: git reset —-hard HEAD
      重置到上上個版本: git reset —-hard HEAD^^
      重置到往上3個版本: git reset ——hard HEAD~3
      重置到指定版本: git reset —-hard 七位版本號


  • 6.查看文件狀態
    • 1.1 查詢文件狀態

      • 紅色: 代表被添加或者修改的文件沒有被添加到暫緩區
      • 綠色: 代表文件在暫緩區,等待提交

      命令: git status


2.4 Git的基本常識


  • 1.文件狀態(git status)
    • 顏色含義

      紅色: 代表被添加或者修改的文件沒有被添加到暫緩區
      綠色: 代表文件在暫緩區,等待提交

    • 版本號的含義

      版本號是一個由SHA1生成的40位哈希值
      這樣做的目的是保證版本號的唯一


  • 2.日志查看配置

    命令: git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)\<%an\>%Creset' --abbrev-commit"


  • 3.配置別名

    • 3.1 設置status命令的別名為st

    命令: git config alias.st "status"

    • 3.2 設置commit命令的別名為ci

    命令: git config alias.ci "commit -m"


  • 4.--global的作用

    • 4.1 可以進行全局配置,所有的版本庫共享此配置

    查看全局配置(桌面前往->個人->.gitconfig)
    個人電腦上建議使用全局配置


3.Git命令行演練-團隊開發

團隊開發必須有一個共享庫,這樣成員之間才可以進行協作開發


  • Git下載和提交命令介紹

    • 1.下載代碼

    命令: git clone 本地代碼倉庫地址

    • 2.提交(推送)代碼到共享庫

    命令: git push

    • 3.更新共享庫代碼到本地

    命令: git pull

3.1 共享庫分類

  • 1.本地共享庫(只能在本地進行操作)

    電腦文件夾/U盤/移動硬盤

  • 2.遠程共享庫(可通過網絡遠程操作)

    • 2.1 自己搭建Git服務器(不建議)

    • 2.2 在Github上托管項目(建議)

      Github網址(https://github.com); 公開項目免費, 私有項目收費

    • 2.3 在OSChina上托管項目(推薦)

      OSChina網址(https://git.oschina.net) 安全免費,在國內訪問速度快


3.2 搭建本地共享庫

  • 1.創建TeamServer文件夾,并進入到TeamServer文件夾內,初始化創建本地共享庫
    • 作用: 團隊多人開發

      命令: git init --bare

    • 結果: 執行完以上命令,生成以下文件和文件夾

08.生成內容.png

3.3 演示團隊多人開發

以下列舉三個角色來進行演示多人開發.分別為項目經理Manager,程序猿一CoderOne,程序猿二CoderTwo.

  • 1.創建文件夾Manager,CoderOne,CoderTwo.

  • 2.項目經理搭建項目結構
    • 2.1 項目經理從共享庫clone項目到本地

      命令: git clone /Users/liwx/Desktop/Tmp/Git/TeamServer

    • 2.2 項目經理搭建好項目結構,使用push,提交到共享庫.

      • 1.進入項目經理的Manager/TeamServer文件夾下創建iOS,Android,Server文件夾

      命令: mkdir iOS Android Server

      • 2.項目經理進入iOS文件夾內創建main.m,并提交到共享庫

      1: touch main.m
      2: git add .
      3: git commit -m "創建main.m文件"
      4: git push

      • 3.以上操作如圖所示
09.搭建項目結構.png
  • 3.CoderOne和CoderTwo分別clone下載TeamServer倉庫到各自的文件夾

    命令: git clone /Users/liwx/Desktop/Tmp/Git/TeamServer

  • 4.演練CoderOne新增文件CoderTwo更新

    • 4.1 CoderOne新增文件,并提交共享庫

      1: touch Person.h
      2: git add .
      3: git commit -m "創建Person.h文件"
      4: git push

    • 4.2 CoderTwo更新倉庫

      1: git pull

  • 5.CoderOne刪除文件,CoderTwo同步更新

    • 5.1 CoderOne新增文件,并提交共享庫

      1: git rm Person.h
      2: git commit -m "刪除Person.h文件"
      3: git push

    • 5.2 CoderTwo更新倉庫

      1: git pull

  • 6.超時和沖突演練,CoderOne和CoderTwo同時修改main.m第一行內容

    • 6.1 CoderOne先修改完提交到共享庫

      1: git add .
      2: git commit -m "CoderOne修改了main.m第一行內容"
      3: git push

    • 6.2 CoderTwo后修改完提交到共享庫,執行到第3步此時會提示文件過期(超時)fetch first

      1: git add .
      2: git commit -m "CoderTwo修改了main.m第一行內容"
      3: git push

    • 6.3 CoderTwo執行git pull更新時,產生沖突

      1: git pull

      • main.m沖突內容
      <<<<<<< HEAD
      // CoderTwo修改了main.m第一行內容
      =======
      // CoderOne修改main.m文件
      >>>>>>> 081af32dbb358ba0470ae0ff996987b050037027
      
      • 修改main.m沖突后
      // CoderTwo修改了main.m第一行內容
      // CoderOne修改main.m文件
      
    • 6.4 CoderTwo解決沖突后提交到共享庫

      1: git add .
      2: git commit -m "解決main.m沖突"
      3: git push

  • 7.CoderTwo演練添加忽略文件.gitignore

    1: touch .gitignore
    2: git add .
    3: git commit -m "添加.gitignore忽略文件"
    4: git push


3.4 Git補充

  • 關于忽略文件

在真實開發中,配置.gitignore文件 , 去github里面搜索gitignore
選擇Objective-C.gitignore版本的,拷貝到本地倉庫即可,記得添加到本地版本庫

  • 常見問題

fetch first 代表當前文件過期,需要從遠程共享庫更新
命令: git pull


4.Git常用命令

4.1 查看、添加、提交、刪除、找回,重置修改文件

  • 查看、添加、提交、刪除、找回,重置修改文件
  • 查看
    git show # 顯示某次提交的內容 git show $id
  • 添加
    git add <file> # 將工作文件修改提交到本地暫存區
    git add . # 將所有修改過的工作文件提交暫存區
  • 刪除
    git rm <file> # 從版本庫中刪除文件
    git rm <file> --cached # 從版本庫中刪除文件,但不刪除文件
  • 重置
    git reset <file> # 從暫存區恢復到工作文件
    git reset -- . # 從暫存區恢復到工作文件
    git reset --hard # 恢復最近一次提交過的狀態,即放棄上次提交后的所有本次修改
  • 恢復
    git revert <$id> # 恢復某次提交的狀態,恢復動作本身也創建次提交對象
    git revert HEAD # 恢復最后一次提交的狀態

4.2 查看文件diff

git diff <file> # 比較當前文件和暫存區文件差異 git diff
git diff <branch1>..<branch2> # 在兩個分支之間比較
git diff --staged # 比較暫存區和版本庫差異
git diff --cached # 比較暫存區和版本庫差異
git diff --stat # 僅僅比較統計信息

4.3 查看提交記錄

git log git log <file> # 查看該文件每次提交記錄
git log -p <file> # 查看每次詳細修改內容的diff
git log -p -2 # 查看最近兩次詳細修改內容的diff
git log --stat #查看提交統計信息

tig
Mac上可以使用tig代替diff和log,brew install tig

4.4 查看、切換、創建和刪除分支

  • 查看分支
    git branch -r # 查看遠程分支
    git branch <new_branch> # 創建新的分支
    git branch -v # 查看各個分支最后提交信息
    git branch --merged # 查看已經被合并到當前分支的分支
    git branch --no-merged # 查看尚未被合并到當前分支的分支
  • 切換分支
    git checkout <branch> # 切換到某個分支
  • 創建分支
    git checkout -b <new_branch> # 創建新的分支,并且切換過去
    git checkout -b <new_branch> <branch> # 基于branch創建新的new_branch
    git checkout $id # 把某次歷史提交記錄checkout出來,但無分支信息,切換到其他分支會自動刪除
    git checkout $id -b <new_branch> # 把某次歷史提交記錄checkout出來,創建成一個分支
  • 刪除分支
    git branch -d <branch> # 刪除某個分支
    git branch -D <branch> # 強制刪除某個分支 (未被合并的分支被刪除的時候需要強制)
  • 分支合并和rebase
    git merge <branch> # 將branch分支合并到當前分支
    git merge origin/master --no-ff # 不要Fast-Foward合并,這樣可以生成merge提交
    git rebase master <branch> # 將master rebase到branch,相當于: git co <branch> && git rebase master && git co master && git merge <branch>

4.5 Git暫存管理

git stash # 暫存
git stash list # 列所有stash
git stash apply # 恢復暫存的內容
git stash drop # 刪除暫存區

4.6 Git遠程分支管理

  • 遠程分支抓取
    git pull # 抓取遠程倉庫所有分支更新并合并到本地
    git pull --no-ff # 抓取遠程倉庫所有分支更新并合并到本地,不要快進合并
    git fetch origin # 抓取遠程倉庫更新
    git merge origin/master # 將遠程主分支合并到本地當前分支
    git checkout --track origin/branch # 跟蹤某個遠程分支創建相應的本地分支
    git checkout -b <local_branch> origin/<remote_branch> # 基于遠程分支創建本地分支,功能同上
  • push遠程分支
    git push # push所有分支
    git push origin master # 將本地主分支推到遠程主分支
    git push -u origin master # 將本地主分支推到遠程(如無遠程主分支則創建,用于初始化遠程倉庫)
    git push origin <local_branch> # 創建遠程分支, origin是遠程倉庫名
    git push origin <local_branch>:<remote_branch> # 創建遠程分支
    git push origin :<remote_branch> #先刪除本地分支(git br -d <branch>),然后再push刪除遠程分支

4.7 Git遠程倉庫管理

  • Git遠程倉庫管理
    git remote -v # 查看遠程服務器地址和倉庫名稱
    git remote show origin # 查看遠程服務器倉庫狀態
    git remote add origin git@ github:robbin/robbin_site.git # 添加遠程倉庫地址
    git remote set-url origin git@ github.com:robbin/robbin_site.git # 設置遠程倉庫地址(用于修改遠程倉庫地址)
    git remote rm <repository> # 刪除遠程倉庫

5.Git資源推薦

  • Git版本控制軟件結合GitHub從入門到精通常用命令學習手冊

鏈接: http://www.ihref.com/read-16369.html

  • Git官方中文手冊

鏈接: http://git-scm.com/book/zh/v2

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,713評論 4 54
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,721評論 9 163
  • 伊昭公路在今年一下紅遍大江南北,走過了夏塔古道,再來古代絲綢之路-弓月道,其中一段來走走看看 站的高 看的遠 白石...
    燕子在路上閱讀 360評論 0 4
  • 人生空虛,有點愛,有些仇,還有早安; 人生苦短,有點希望,有些夢想,還有晚安; 感謝大圣不殺之恩,必放下屠刀,涌泉相伴。
    高冷冷的冷閱讀 165評論 0 0