@(〓〓 iOS-實用技術)[代碼管理 Git/SVN]
- 作者: Liwx
- 郵箱: 1032282633@qq.com
目錄
- 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文件中查看配置結果
-
- 創建本地倉庫如圖所示
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文件"
操作如圖
-
- 2.修改文件并提交到本地倉庫
2.1 修改main.m文件的內容
-
2.2 添加到
stage暫存區
命令:
git add .
-
2.3 將修改的文件提交到本地倉庫
命令:
git commit -m "修改了main.m文件"
操作如圖
- 3.刪除文件并提交到本地倉庫
-
3.1 刪除文件并提交
命令:
git rm main.m
-
3.2 將刪除文件提交到本地倉庫
命令:
git commit -m "刪除了main.m文件"
操作如圖
-
- 4.日志查看
-
4.1 查看日志(查看Git的更新日志和
40位哈希值版本號
)命令:
git log
-
4.2 查看日志(查看到Git的更新日志和
7位哈希值版本號
)命令:
git reflog
操作如圖
-
- 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
結果: 執行完以上命令,生成以下文件和文件夾
-
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.以上操作如圖所示
-
-
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
- 7.1 從GitHub下載Objective-c的忽略文件.gitignore放到自己本地倉庫的iOS文件夾中.鏈接: https://github.com/github/gitignore/blob/master/Objective-C.gitignore.將Objective-C.gitignore內容復制到創建的.gitignore文件中并保存.提交.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從入門到精通常用命令學習手冊
- Git官方中文手冊