zoukankan      html  css  js  c++  java
  • Git 入门

    Git入门

    1、下载

    下载地址:http://git-scm.com/downloads

    从这里可以下载到多种操作系统的支持版本,目前有:Mac、Windows、Linux、Solaris。

    2、安装

    在Linux 上安装:

    如果你想在 Linux 上用二进制安装程序来安装 Git,可以使用发行版包含的基础软件包管理工具来安装。 如果以 Fedora 上为例,你可以使用 yum:

     

    $ yum install git

    在Windows上安装:

    Windows版本是一个exe文件,与其它软件的安装方式是一样的。

    3、初次使用Git前的配置

    1)配置用户、邮箱:

    $ git config --global user.name "fjn"
    $ git config --global user.email fs1194361820.com

     

    如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。 当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。

    2)关联文本编辑器:

    $ git config --global core.editor emacs

    下面是windows系统上关联EditPlus的方法:

    $ git config --global core.editor “”D:Program FilesEditPlusx86EditPlus.exe””

    4、查看help

    $ git help <verb>
    $ git <verb> --help
    $ man git-<verb>

    也可以直接通过浏览器进行查看,因为Git相关问题就在Git安装目录下:

     

    5、将现在项目纳入Git管理

    如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入:

    $ git init

             使用这个命令会初始化一个Git仓库,但你项目中的文件并没有加入到仓库中,所以需要做的就是将项目中的文件加入到仓库中,方法如下:

    $ git add *.c
    $ git add LICENSE
    或者可以直接使用:
    $ git add *
    最终使用:
    $ git commit -m 'initial project version'

             或许你用习惯了SVN等,add命令入SVN中的加入是类似的,但又是不同的,最后需要提交。-m 后是commit comment。

    6、从远程仓库clone项目

    如果你想获得一份已经存在了的 Git 仓库的拷贝,比如说,你想为某个开源项目贡献自己的一份力,这时就要用到 git clone 命令。 如果你对其它的 VCS 系统(比如说Subversion)很熟悉,请留心一下你所使用的命令是"clone"而不是"checkout"。

    $ git clone https://github.com/libgit2/libgit2

     如果你想在克隆远程仓库的时候,自定义本地仓库的名字,你可以使用如下命令:

    $ git clone https://github.com/libgit2/libgit2 mylibgit

    7、Git管理下的文件的状态变化周期

    请记住,你工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪。 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改,已修改或已放入暂存区。 工作目录中除已跟踪文件以外的所有其它文件都属于未跟踪文件,它们既不存在于上次快照的记录中,也没有放入暂存区。 初次克隆某个仓库的时候,工作目录中的所有文件都属于已跟踪文件,并处于未修改状态。

    编辑过某些文件之后,由于自上次提交后你对它们做了修改,Git 将它们标记为已修改文件。 我们逐步将这些修改过的文件放入暂存区,然后提交所有暂存了的修改,如此反复。所以使用 Git 时文件的生命周期如下:

     

    使用 git status 可以查看文件的状态,例如:

     

    8、常用命令

    1)将文件纳入跟踪: git add filename

    2)将文件移除跟踪: git rm filename

    3)要在 Git 中对文件改名,可以这么做:git mv,例如:

    $ git mv README.md README

    4)git log 查看提交日志

    5)恢复指定文件:git checkout

    最后将文件提交就行了,使用git commit。

    如果想要直接提交文件,而不使用git add,可以:git commit –a –m ‘ commit message’。如果在提交时不指定comment,就会启动你指定的默认的文件编辑器,让你输入comments。

    题外话:

    编辑文件:直接在git bash中使用vim file,例如:

     

    效果:

     

    如果想在windows系统下也能够使用vim工具,可以使用gvim。 

    而在windows上可以使用这些命令的缘由是在git/bin目录下,有大量的相关的exe存在:

     

    9、使用远程仓库

    在前面第6小节中,已经说明了如何从远程仓库clone一个已存在的项目。这里就再说一些远程操作相关的其他内容:

    1)  关联远程仓库

    将远程仓库关联,就可以在本地仓库与远程仓库之前进行文件推送与拉取了。

    git remote add name url

    $ git remote add shortName https://github.com/userid/reposName

     

    2)从远程仓库pull、fetch:

    使用git pull,会将远程仓库中的指定分支到本地仓库的一个分支中,并将两者合并。

    使用git fetch,会从远程仓库中抓取你没有的数据,但不会合并,必须手动合并。

    3)push推送到远程仓库

    使用git push reposName branchName,将仓库reposName中的branchName推送文件到远程仓库。

    例如,要将本地修改好的代码同步到远程仓库中。就需要如下操作:

          a)使用{git add filename}, {git add --update filename}将添加(或者修改) 的文件在本地仓库上建立索引。

          b)使用{git commit -m your_commit_message} 将对代码的修改提交到本地仓库上。

          c)使用{git push remoteReposName branchName} 将本地仓库上的代码推送到远程仓库。

           例如下面就是将本地仓库的代码同步到远程仓库上,只不过这个远程仓库是在GitHub上的.

           

    4)远程仓库重命名:

    git remote rename oldName newName

    其实是远程仓库在Git程序中的一个配置,并不会真正的改变远程仓库的名称,只是为了让你在使用时能够进行区分。

    5)远程仓库移除:

    git remote rm name

             同样并不会真正的删除远程仓库,而是你在使用git时,不能再对远程仓库进行操作了。

    6)切换到远程分支:

    git checkout -b {localBranchName} {origin}/{remoteBranchName}  

    代表切换到远程分支 origin/remoteBranchName, 并在本地创建分支 localBranchName

    例如:

             我先clone kafka trunk :

                      git clone https://github.com/apache/kafka.git .

             然后查看当前分支: git status

             最后切到0.10.0分支:git checkout -b 0.10.0 origin/0.10.0

     

  • 相关阅读:
    面试题:增强一个对象的方法的三种方式
    Spring笔记01_下载_概述_监听器
    mybatis笔记02
    mybatis笔记01
    muduo学习笔记(二)Reactor关键结构
    Muduo学习笔记(一) 什么都不做的EventLoop
    一个linux下简单的纯C++实现Http请求类(GET,POST,上传,下载)
    一个轻巧高效的多线程c++stream风格异步日志(二)
    一个轻巧高效的多线程c++stream风格异步日志(一)
    C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector).
  • 原文地址:https://www.cnblogs.com/f1194361820/p/4740394.html
Copyright © 2011-2022 走看看