git是什么前域?
版本控制工具译仗,Linux的作者寫出來的
與SVN的集中式相比觉壶,分布式(可以本地提交)
集中式:所有開發(fā)者都連一個服務(wù)器進行協(xié)同工作
分布式:本地就可以提交髓需、可以通過網(wǎng)絡(luò)的git服務(wù)器多人協(xié)作
git的安裝和配置:
下載Xcode玻褪,安裝CommandLineTool就可以使用git了
初始化時的需要配置一下用戶名和郵箱地址肉渴,使用終端輸入:
不配置的話,使用會報錯:
設(shè)置全局配置:
$git config --global user.name"Your Name"
$git config --global user.email"email@example.com"
列出全局配置:
$git config --global --list
git的使用:
初始化:
cd工程路徑
git init
添加修改到暫存區(qū):
git add文件名
提交暫存區(qū)中的修改作為一個新版本:
git commit -m “提交代碼的注釋”
部分提交和全部提交:
git commit -a
git commit -m “提交代碼的注釋” -i
查看當(dāng)前版本控制狀態(tài):
git status
對比上一次修改带射、對比工作區(qū)和當(dāng)前版本庫中最新的版本的修改:
git diff需要查看修改的文件名
git diff HEAD —需要查看修改的文件名
日志查看:
git log
git log —pretty=oneline
git log —graph
重置到指定版本(暫存區(qū)也會被回退到工作區(qū)unstage):上一個同规、往前數(shù)4個、往前數(shù)100個
git reset —hard HEAD^
git reset —hard HEAD^^^^
git reset —hard HEAD~100
查看可以重做的版本日志:
git reflog
撤銷工作區(qū)文件的修改(之前add過撤銷到add的狀態(tài)窟社,沒有add撤銷到版本庫的狀態(tài)):
git checkout —需要撤銷的文件
刪除文件:
git rm需要從版本庫中刪除的文件
分支創(chuàng)建:
$git branch dev
查看分支:
$git branch
切換分支:
$git checkout master
創(chuàng)建并切換分支:
$git checkout -b dev
合并分支master和dev (假如當(dāng)前在master):
$git merge dev
刪除分支:
$git branch -d dev
創(chuàng)建標簽(Tag某個版本的指針):
$git tag v1.0
查看標簽:
$git tag
對之前的某個版本打標簽:
$git tag v1.1verid
對之前某個版本打標簽并加注釋:
$git tag -a v1.1-m"v1.1 released"verid
查看標簽信息:
$ gitshowv1.0
=============================
遠程倉庫:
需要用ssh的key券勺,注意要用默認的rsa的文件地址,不要新建
默認的私鑰:~/.ssh/id_rsa默認的公鑰:~/.ssh/id_rsa.pub
$ssh-keygen -t rsa -C"email@example.com"
把本地的git倉庫與遠程服務(wù)器倉庫關(guān)聯(lián):
$git remote add origin git@github.com:changbiao/gitproject.git
把本地代碼推送到遠程git庫上面(-u為了讓本地的master分支和遠程的關(guān)聯(lián)):
$ git push -u origin master
$ git push -u origin master -f
推送其他分支到git遠程服務(wù)器:
$git push origin dev
解除與遠程服務(wù)器的關(guān)聯(lián):
$ git remote rm origin
克隆遠程服務(wù)器的代碼到本地:
$ git clone https://github.com/changbiao/QuestionAnser.git
$ git clone https://github.com/changbiao/QuestionAnser.git ?LocalWorkCopyQA
從遠程服務(wù)器下載到本地工作區(qū)灿里,不進行合并:
$ git fetch
$ git fetch origin master:tmp
拉取最新服務(wù)器代碼到本地关炼,并且合并到本地:
$ git pull
工作區(qū):work copy
暫存區(qū):stage
版本庫:repo
工作區(qū)add =>暫存區(qū)commit=>版本庫
Q/A:
git的版本號是一串字符,svn的版本號是遞增的數(shù)字
HEAD表示當(dāng)前版本庫中最新版本
unstage把暫存區(qū)的修改回退到工作區(qū)
origin一般是遠程庫的名字
.gitignore文件匣吊,描述哪些文件忽略掉儒拂,不用git管理
github.com
git.oschina.net
為什么需要ssh key?
為了確認是你在推送代碼色鸳,不是別人社痛、可以添加多臺電腦的ssh key
第一次連接git服務(wù)器時的警告:輸入yes即可
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
?GitProjectgit:(master)?gitcommitGitProject/ViewController.m-m"修改沖突"
fatal: cannot do a partial commit during a merge.
?GitProjectgit:(master)?gitmerge dev1
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.
在提交單個文件的時候出現(xiàn)這個錯誤.
意思是不能部分提交代碼.
原因是git認為你有部分代碼沒有做好提交的準備,比如沒有添加
解決方法是:
1.提交全部
git commit -a
2.如果不想提交全部,那么可以通過添加-i選項
git commit file/to/path -i -m "merge"