git是一款開源的分布式版本控制工具,在世界上所有的分布式版本控制工具中,git是最快、最簡單、最流行的。
git的作者是大神,Linux之父:Linus Benedict Torvalds。
git與Github的關系?
git是一個版本控制工具
github是一個用git做版本控制的項目托管平臺
有什么用?
一,GIT本地開發
二,GIT團隊開發操作
簡言之,這是一個程序員的逼格倍增的神器~~
一,Git本地操作命令指南:
GIT命令行幫助
git help :git指令幫助手冊
查看其他指令的做法:git help其他指令
git config :git的配置信息相關(修改的是.git/config文件)
配置用戶名:git config“user.name”
用戶名(用于跟蹤修改記錄)
配置郵箱:git config“user.email”郵箱(用于多人開發間的溝通)
查看配置信息:git config–l
編輯配置信息:git config–e(用vim編輯,:wq是退出vim編輯器)
設置指令的別名:git configalias.別名 原指令名稱
設置帶參數指令的別名:git configalias.別名 “原指令名稱 參數”
將此設置應用到整個系統中:git config––global
- 創建代碼庫 & 配置個人信息
1> 創建代碼倉庫
$ git init
2> 配置用戶名和郵箱
$ git config user.name manager
$ git config user.email manager@gmail.com
- 以上兩個命令會將用戶信息保存在當前代碼倉庫中
3> 如果要一次性配置完成可以使用一下命令
$ git config --global user.name manager
$ git config --global user.email manager@gmail.com
- 以上兩個命令會將用戶信息保存在用戶目錄下的 .gitconfig 文件中
4> 查看當前所有配置
$ git config -l
- 實際開發
1> 創建代碼,開始開發
$ touch main.c
$ open main.c
2> 將代碼添加到代碼庫
查看當前代碼庫狀態
$ git status
查看某個文件的狀態:git status文件名
查看當前路徑所有文件的狀態:git status
將文件添加到代碼庫
//保存某個文件到暫緩區
$ git add main.c
將修改提交到代碼庫
$ git commit -m "添加了main.c"
提示:
- 在此一定要使用 -m 參數指定修改的備注信息
- 否則會進入 vim 編輯器,如果對vim不熟悉,會是很糟糕的事情
將當前文件夾下的所有新建或修改的文件一次性添加到代碼庫
$ git add .
3> 添加多個文件
$ touch Person.h Person.m
//將工作區的文件保存到暫緩區
$ git add .
//將暫緩區的文件提交到當前分支
//提交某個文件到分支:git commit -m ”注釋”
文件名
//保存當前路徑的所有文件到分支:git commit -m ”注釋”
$ git commit -m "添加了Person類"
$ open Person.h
$ git add .
$ git commit -m "增加Person類屬性"
- 注意 使用git時,每一次修改都需要添加再提交,這一點是與svn不一樣的
git 的重要概念及工作原理
工作區
暫存區(staged)
分支(HEAD)
- 別名 & 日志
$ git config alias.st status
$ git config alias.ci "commit -m"
除非特殊原因,最好不要設置別名,否則換一臺機器就不會用了
查看所有版本庫日志
$ git log
查看指定文件的版本庫日志
$ git log 文件名
查看當前路徑所有文件的修改日志:git log
用一行的方式查看簡單的日志信息:git log––pretty=oneline
查看最近的N次修改:git log–N(N是一個整數)
配置帶顏色的log別名
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"
提示:在git中,版本號是一個由SHA1生成的哈希值
git diff :查看文件最新改動的地方
查看某個文件的最新改動的地方:git diff文件名
查看當前路徑所有文件最新改動的地方:git diff
- 版本號,讓我們在任意版本之間穿梭
回到當前版本,放棄所有沒有提交的修改
//git reset :版本回退(建議加上––hard參數,git支持無限次后悔)
//回退到上一個版本:git reset––hard HEAD^
//回退到上上一個版本:git reset––hard HEAD^^
//回退到上N個版本:git reset––hard HEAD~N(N是一個整數)
//回退到任意一個版本:git reset––hard 版本號(版本號用7位即可)
//git reflog :查看指令使用記錄(能夠查看所有的版本號)
$ git reset --hard HEAD
07.刪除
git rm:刪除文件(刪完之后要進行commit操作,才能同步到版本庫)
08.上傳遠程倉庫
git pull:下載遠程倉庫的最新信息到本地倉庫
git push:將本地的倉庫信息推送到遠程倉庫
二,GIT團隊開發操作
- 建立代碼倉庫(專門用于團隊開發的代碼倉庫)
切換目錄
$ cd /Users/Desktop/git演練/公司/weibo
建立空白代碼庫(專門用于團隊開發)
$ git init --bare
- 項目經理準備項目(前奏)
切換目錄
$ cd /Users/Desktop/git演練/經理
"克隆"代碼庫到本地
$ git clone /Users/Desktop/git演練/公司/weibo/
個人信息配置(因為要演示一臺機器上的多人協作,日常開發可以忽略)
$ git config user.name manager
$ git config user.email manager@163.com
.gitignore
.gitignore可以指定哪些文件不納入版本庫的管理
參考網址:https://github.com/github/gitignore
顯示隱藏文件
https://github.com/github/gitignore/blob/master/Objective-C.gitignore
命令行中進入與.git同級的目錄
$ cd /Users/Desktop/git演練/經理/weibo
將以下命令一次性粘貼到命令行中
echo -e "# Xcode
build/
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate
//# CocoaPods
//#
//# We recommend against adding the Pods directory to your .gitignore. However
//# you should judge for yourself, the pros and cons are mentioned at:
//# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
//# Pods/" > .gitignore
將.gitignore添加到代碼庫
$ git add .gitignore
創建項目
提交同時"push"到遠程代碼倉庫新人加入
比如:
張三加入開發
git clone 共享代碼庫的地址修改代碼—>
git commit —>git push
注意:
同個件的共享同個件共享時發代碼沖突
創建新件的共享
storyboard的共享
靜態庫的共享(不需要像svn 樣執 add命令)
...分布式的代碼庫 - 僅供參考
由于git是分布式的,任何一臺計算機上都保留有完整的代碼庫的內容,因此可以把團隊開發的代碼庫放在任何位置
搭建遠程倉庫的途徑
自己搭建一個git服務器:費時費力
在GitHub上托管項目:公開項目免費、私有項目收費,很多第三方開源項目
在Oschina上托管項目:完全免費,在國內訪問速度快(推薦使用)