Git简要说明

安装

配置Git

设置名字和邮箱地址

git config --global user.name cytgenkidu
git config --global user.email tgenkidu@163.com

检查配置信息,执行 git config --list

更多自定义配置请查看。

创建新仓库(repository)

创建repository(仓库)

建立本地新仓库

创建新文件夹,打开,然后执行 git init 创建新的 git 仓库。

存储库克隆到新目录

  • 创建一个本地仓库的克隆版本 git clone /path/to/repository
  • 创建一个远程仓库的克隆版本 git clone username@host:/path/to/repository

Git工作流

Git有三种状态:已提交(committed)、已修改(modified)和已暂存(staged)。 由此引出三个工作区域的概念:Git 仓库、工作目录以及暂存区域(Index)。

  • Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
  • 工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  • 暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’’,不过一般说法还是叫暂存区域。

基本的 Git 工作流程如下:

  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

添加和提交

提出更改(把它们添加到暂存区),命令如下:

  • 添加某个文件:git add <filename>
  • 添加所有更改:git add *

提交改动(改动已经提交到了本地的Git 仓库的 HEAD 中,但是还没到远端仓库),命令如下:git commit -m "代码提交信息"

推送改动

将改动提交到远程仓库:git push origin master,可将master改为任何分支。

若未克隆现有仓库,并欲将你的仓库连接到某个远程服务器,可执行 git remote add origin <server>,可将改动推送到所添加的服务器上去。

分支

分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。

创建分支

创建一个叫做“test”的分支:git branch test ,切换到“test”分支:git checkout test。也可直接执行git checkout -b test,创建并切换。

切换分支

切换回主分支:git checkout master

删掉分支

删除“test”分支:git branch -d test, 除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:git push origin <branch>

更新与合并

更新你的本地仓库至最新改动,执行:git pull,在你的工作目录将获取(fetch)并合并(merge)远端的改动。

要合并其他分支到你的当前分支(例如 master),执行:git merge <branch>

在这两种情况下,git 都会尝试去自动合并改动。但很有可能并非每次都成功,还有可能出现冲突(conflicts)。 这时候需要修改文件来手动合并这些冲突(conflicts)。改后,你需要执行如下命令git add <filename>将它们标记为合并成功。

在合并改动之前,你可以使用如下命令预览差异:git diff <source_branch> <target_branch>

示例

  1. 获取最新代码到本地,并自动合并到当前分支:

    //查询当前远程的版本
    $ git remote -v
    //直接拉取并合并最新代码
    $ git pull origin master [拉取远端origin/master分支并合并到当前分支]
    
  2. 获取最新代码到本地,然后手动合并分支,需额外建立本地分支

    //查看当前远程的版本
    $ git remote -v
    //获取最新代码到本地临时分支(本地当前分支为[branch],获取的远端的分支为[origin/branch])
    $ git fetch origin master:master1  [在本地建立master1分支,并下载远端的origin/master分支到master1分支中]
    //查看版本差异
    $ git diff master1 [查看本地master1分支与当前分支的版本差异]
    //合并最新分支到本地分支
    $ git merge master1    [合并本地分支master1到当前分支]
    //删除本地临时分支
    $ git branch -D master1    [删除本地分支master1]
    
  3. 获取最新代码到本地,然后手动合并分支,不额外建立本地分支

    //查询当前远程的版本
    $ git remote -v
    //获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch])
    $ git fetch origin master  [获取远端的origin/master分支]
    //查看版本差异
    $ git log -p master..origin/master [查看本地master与远端origin/master的版本差异]
    //合并最新代码到本地分支
    $ git merge origin/master  [合并远端分支origin/master到当前分支]
    

链接与资源

Git 社区参考书

下一页
上一页