git1

http://git-scm.com/

git是什么?

版本控制工具,Linux的作者写出来的

与SVN的集中式相比,分布式(可以本地提交)

集中式:所有开发者都连一个服务器进行协同工作

分布式:本地就可以提交、可以通过网络的git服务器多人协作

git的安装和配置:

下载Xcode,安装CommandLineTool就可以使用git了

初始化时的需要配置一下用户名和邮箱地址,使用终端输入:

不配置的话,使用会报错:

设置全局配置:

$git config --global user.name"Your Name"

$git config --global user.email"[email protected]"

列出全局配置:

$git config --global --list

git的使用:

初始化:

cd工程路径

git init

添加修改到暂存区:

git add文件名

提交暂存区中的修改作为一个新版本:

git commit -m “提交代码的注释”

部分提交和全部提交:

git commit -a

git commit -m “提交代码的注释” -i

查看当前版本控制状态:

git status

对比上一次修改、对比工作区和当前版本库中最新的版本的修改:

git diff需要查看修改的文件名

git diff HEAD —需要查看修改的文件名

日志查看:

git log

git log —pretty=oneline

git log —graph

重置到指定版本(暂存区也会被回退到工作区unstage):上一个、往前数4个、往前数100个

git reset —hard HEAD^

git reset —hard HEAD^^^^

git reset —hard HEAD~100

查看可以重做的版本日志:

git reflog

撤销工作区文件的修改(之前add过撤销到add的状态,没有add撤销到版本库的状态):

git checkout —需要撤销的文件

删除文件:

git rm需要从版本库中删除的文件

分支创建:

$git branch dev

查看分支:

$git branch

切换分支:

$git checkout master

创建并切换分支:

$git checkout -b dev

合并分支master和dev (假如当前在master):

$git merge dev

删除分支:

$git branch -d dev

创建标签(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 protected]"

把本地的git仓库与远程服务器仓库关联:

$git remote add origin [email protected]:changbiao/gitproject.git

把本地代码推送到远程git库上面(-u为了让本地的master分支和远程的关联):

$ git push -u origin master

$ git push -u origin master -f

推送其他分支到git远程服务器:

$git push origin dev

解除与远程服务器的关联:

$ git remote rm origin

克隆远程服务器的代码到本地:

$ git clone https://github.com/changbiao/QuestionAnser.git

$ git clone https://github.com/changbiao/QuestionAnser.git  LocalWorkCopyQA

从远程服务器下载到本地工作区,不进行合并:

$ git fetch

$ git fetch origin master:tmp

拉取最新服务器代码到本地,并且合并到本地:

$ git pull

工作区:work copy

暂存区:stage

版本库:repo

工作区add =>暂存区commit=>版本库

Q/A:

git的版本号是一串字符,svn的版本号是递增的数字

HEAD表示当前版本库中最新版本

unstage把暂存区的修改回退到工作区

origin一般是远程库的名字

.gitignore文件,描述哪些文件忽略掉,不用git管理

github.com

git.oschina.net

为什么需要ssh key?

为了确认是你在推送代码,不是别人、可以添加多台电脑的ssh key

第一次连接git服务器时的警告:输入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.

在提交单个文件的时候出现这个错误.

意思是不能部分提交代码.

原因是git认为你有部分代码没有做好提交的准备,比如没有添加

解决方法是:

1.提交全部

git commit -a

2.如果不想提交全部,那么可以通过添加-i选项

git commit file/to/path -i -m "merge"

你可能感兴趣的:(git1)