git1

作者: nothing_c | 来源:发表于2016-10-29 00:46 被阅读15次

    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@example.com"

    列出全局配置:

    $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@example.com"

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

    $git remote add origin git@github.com: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

          本文链接:https://www.haomeiwen.com/subject/wdoeuttx.html