`
abc20899
  • 浏览: 928833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

git介绍

 
阅读更多
git介绍

使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名。
$ git config --global user.name "Scott Chacon"
$ git config --global user.email "schacon@gmail.com"
执行了上面的命令后,会在你的主目录(home directory)建立一个叫 ~/.gitconfig 的文件
[user]
name = junechiu
email = abc20899@163.com


git status 查看索引

一.  获得git仓库
我们需要一个Git仓库。有两种方法可以得到它:一种是从已有的Git仓库中 clone (克隆,复制);还有一种是新建一个仓库,把未进行版本控制的文件进行版本控制。

1. Clone一个仓库

   为了得一个项目的拷贝(copy),我们需要知道这个项目仓库的地址(Git URL). Git能在许多协议下使用,所以Git URL可能以ssh://, http(s)://, git://,或是只是以一个用户名(git 会认为这是一个ssh 地址)为前辍. 有些仓库可以通过不只一种协议来访问,例如,Git本身的源代码你既可以用 git:// 协议来访问:

   git clone git://git.kernel.org/pub/scm/git/git.git  ******************clone一个仓库******************
   也可以通过http 协议来访问:
   git clone http://www.kernel.org/pub/scm/git/git.git

2. 初始化一个新的仓库

    现在假设有一个叫”project.tar.gz”的压缩文件里包含了你的一些文件,你可以用下面的命令让它置于Git的版本控制管理之下.
    $ tar xzf project.tar.gz
    $ cd project
    $ git init       ******************初始化一个仓库******************
    Git会输出:
    Initialized empty Git repository in .git/
    如果你仔细观查会发现project目录下会有一个名叫”.git” 的目录被创建,这意味着一个仓库被初始化了。



二.  正常的工作流程  add ---> commit --->
    修改文件,将它们更新的内容添加到索引中.
   
    $ git add file1 file2 file3     ******************添加新文件******************
    你现在为commit做好了准备,你可以使用 git diff 命令再加上 --cached 参数 ,看看哪些文件将被提交(commit)。
   
    $ git diff --cached              ******************哪些文件将被提交******************
    也可以用git status命令来获得当前项目的一个状况:
   
    git commit  (git commit -m test) -m后加入提交说明  ******************提交修改******************
       提交命令 这会提示你输入本次修改的注释,完成后就会记录一个新的项目版本.  
       commit注释最好以一行短句子作为开头,来简要描述一下这次commit所作的修改(最好不要超过50个字符);然后空一行再把详细的注释写清楚。这样就可以很方便的用工具把commit注释变成email通知,第一行作为标题,剩下的部分就作email的正文.
  
    除了用git add 命令,还可以用
    $ git commit -a           ******************提交所有修改的文件******************

    这会自动把所有内容被修改的文件(不包括新创建的文件)都添加到索引中,并且同时把它们提交。

    Git跟踪的是内容不是文件 git add 不但是用来添加不在版本控制中的新文件,也用于添加已在版本控制中但是刚修改过的文件


三.  分支与合并@基础
   一个Git仓库可以维护很多开发分支。现在我们来创建一个新的叫”experimental”的分支:
   $ git branch experimental  ******************新建分支*****************
 
   如果你运行下面这条命令:
   $ git branch              ******************查看所有分支******************

   你会得到当前仓库中存在的所有分支列表:
   experimental
   * master
 
  “experimental” 分支是你刚才创建的,“master”分支是Git系统默认创建的主分支。星号(“*”)标识了你当工作在哪个分支下,输入:
  $ git checkout experimental  ******************切换分支******************

  切换到”experimental”分支,先编辑里面的一个文件,再提交(commit)改动,最后切换回 “master”分支。
  (edit file)
  $ git commit -a             ******************提交并 切换******************
  $ git checkout master

  你现在可以看一下你原来在“experimental”分支下所作的修改还在不在;因为你现在切换回了“master”分支,所以原来那些修改就不存在了。

  你现在可以在“master”分支下再作一些不同的修改:
  (edit file)
  $ git commit -a
 
  这时,两个分支就有了各自不同的修改(diverged);我们可以通过下面的命令来合并“experimental”和“master”两个分支:
  $ git merge experimental      ******************合并分支******************

  如果这个两个分支间的修改没有冲突(conflict), 那么合并就完成了。如有有冲突,输入下面的命令就可以查看当前有哪些文件产生了冲突:
 
  $ git diff                     ******************查看冲突的文件******************
  当你编辑了有冲突的文件,解决了冲突后就可以提交了:

  $ git commit -a
 
  提交(commit)了合并的内容后就可查看一下:
  $ gitk                         ******************查看合并的信息******************

  执行了gitk后会有一个很漂亮的图形的显示项目的历史。
  这时你就可以删除掉你的 “experimental” 分支了(如果愿意):
  $ git branch -d experimental   ******************删除一个分支******************

   git branch -d只能删除那些已经被当前分支的合并的分支. 如果你要强制删除某个分支的话就用git branch –D;下面假设你要强制删除一个叫”crazy-idea”的分支:
   $ git branch -D crazy-idea     ******************强制删除某个分支******************
   分支是很轻量级且容易的,这样就很容易来尝试它。


   合并两个分离的分支
   $ git merge branchname         ******************合并分支到当前分支******************
   这个命令把分支"branchname"合并到了当前分支里面。如有冲突(冲突--同一个文件在远程分支和本地分支里按不同的方式被修改了);那么命令的执行输出就像下面一样
   $ git merge next
       100% (4/4) done
       Auto-merged file.txt
       CONFLICT (content): Merge conflict in file.txt
       Automatic merge failed; fix conflicts and then commit the result.
   在有问题的文件上会有冲突标记,在你手动解决完冲突后就可以把此文件添 加到索引(index)中去,用git commit命令来提交,就像平时修改了一个文件 一样。
   如果你用gitk来查看commit的结果,你会看到它有两个父分支:一个指向当前 的分支,另外一个指向刚才合并进来的分支。

   git status 会显示这些文件没有合并(unmerged)

   git reset --hard HEAD     ******************撒销一个合并******************

   $ git reset --hard ORIG_HEAD  ******************合并后代码提交了?******************


   git log  ******************显示所有的提交******************

   git diff master..test       ******************显示两个分支间的差异******************


四. 分布式的工作流程

    Bob执行    git clone /home/alice/project myrepo -->修改 --->git commit -a
    Alice执行  $ cd /home/alice/project
    Alice执行  $ git pull /home/bob/myrepo master ******************拉取项目******************
    git pull命令执行两个操作: 它从远程分支(remote branch)抓取修改 的内容,然后把它合并进当前的分支。

    如果你要经常操作远程分支(remote branch),你可以定义它们的缩写:
    Bob执行   $ git remote add bob /home/bob/myrepo   bob是缩写    在这里远程分支的名 字就叫bob/master.
    Alice执行 $ git fetch bob           这条命令并不会把抓下来的修改合并到当前分支里
    
    Alice执行 $ git log -p master..bob/master  把Bob从Alice的主分支(master)中签出后所做的修改全部显示出来。

    Alice执行 $ git merge bob/master   把bob/master分支合并进来
           也可以用  git pull . remotes/bob/master

    Bob执行 $ git pull
      如果Bob从Alice的仓库克隆(clone),那么他就不需要指定Alice仓库的地 址;因为Git把Alice仓库的地址存储到Bob的仓库配库文件,这个地址就是 在git pull时使用:

      $ git config --get remote.origin.url
        /home/alice/project

    git config -l        ******************git clone创建的所有配置参数******************

    如果Bob打算在另外一台主机上工作,他可以通过ssh协议来执行"clone" 和"pull"操作:
    $ git clone alice.org:/home/alice/project myrepo

   
    将修改推到一个公共仓库
    git push ssh://yourserver.com/~you/proj.git master:master
    

    你可以强制git-push在上传修改时先更新,只要在分支名前面加一个加号。
    $ git push ssh://yourserver.com/~you/proj.git +master




































分享到:
评论

相关推荐

    Git介绍与使用-培训专用课程PPT

    Git 是一个广泛应用于软件开发领域的开源分布式版本控制系统,它的核心优势在于速度、简单的设计以及对非线性开发模式的强大支持。Git 不仅提供了一个安全、高效的代码管理环境,还允许开发者在本地创建和维护版本库...

    git代码管理艺术_GIT介绍

    git代码管理艺术_GIT介绍,介绍版本管理软件的不同,GIT的使用方法等,让大家从0基础掌握到GIT使用规范

    git 介绍及使用 ,基础使用

    Git 介绍及使用,基础使用 Git 是一个用于项目的版本管理及团队协同开发的工具。它可以帮助开发者更好地管理项目的版本,并实现团队的协同开发。下面我们来说说 Git 的安装、基本使用、远程仓库操作、分支管理、...

    Git介绍和基本使用_大数据产品部_莫海滩.pptx

    "Git介绍和基本使用" Git是当前最流行的版本管理系统之一,它可以帮助开发者们更好地管理项目的代码版本,协同办公,提高开发效率。下面将对Git的基本概念、 Git的诞生之路、Git与Svn对比、Git的基本使用、实际...

    关于git的手册总结简单的git介绍,git的相关指令

    Git 是一个分布式版本控制系统,广泛应用于软件开发和协作工作中。本文将对Git的基本概念和常用命令进行详述,帮助读者理解和掌握Git的核心功能。 首先,Git有三个主要工作区域:工作区、暂存区(stage 或 index)...

    git介绍以及常用命令

    Git 是一个强大的分布式版本控制系统,由 Linux 内核之父 Linus Torvalds 在2005年创建。它的设计目标是高效、灵活且可靠,适用于管理任何类型的文件的变更历史,尤其适合软件开发团队协作。Git 的核心概念是仓库...

    git介绍及学习指南

    git开发指南,为初学者提供一个学习指引,适合自我学习及技术培训使用

    Git 介绍及几个常用命令的使用.md

    具体介绍了在Git管理工具常用的命令的使用方法,快速掌握Git的使用

    git简介

    Git&GitHub_Git简史.avi

    Git介绍,windows下的畸形用法

    介绍了下SVN和GIT的区别和关联 介绍了一种用法 同时介绍了windows下的畸形用法

    git 文件管理PDF存储

    Git 介绍 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git 是一种免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 安装非常简单,只需...

    git使用简介ppt

    #### 一、Git介绍及其特点 **Git** 是一个开源的分布式版本控制系统,被广泛应用于软件开发过程中,用于高效地管理和跟踪计算机文件的各种变动。Git 最初由 Linus Torvalds 开发,旨在更好地管理 Linux 内核的开发...

    [Github Desktop][Git 教学]图形接口04. .Git介绍与建立Repo

    [Github_Desktop][Git_教學]圖形介面#04._.Git介紹與建立Repo

    Gitbash-2.22.rar

    1. **Git介绍**:Git是一款分布式版本控制系统,由Linux之父Linus Torvalds开发,用于Linux内核源码管理。它具有高效、快速和强大的分支合并能力,是现代软件开发中不可或缺的工具。 2. **Git Bash**:Git Bash是...

    git的新手指引

    介绍在服务器上如何使用Git,包括: - **协议**:本地协议、SSH协议、Git协议、HTTP/S协议各自的特点。 - **服务器部署**:纯目录转移、小型安装、生成SSH公钥、架设服务器等。 - **公共访问**:网页界面GitWeb和...

    第五章 Git及GitHub和Gitee的应用.pdf

    本章节主要介绍了 Git 及其在 VSCode 中的应用,包括 Git 的基本概念、版本控制、下载和安装、基本操作等。 一、Git 介绍 Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年创建,用于维护 Linux...

    progit介绍文档-local-branching-on-the-cheap

    The entire Pro Git book, written by Scott Chacon and Ben Straub and published by Apress, is available here. All content is licensed under the Creative Commons Attribution Non Commercial Share Alike ...

    git.ppt演示文稿

    git.ppt演示文稿,git.ppt演示文稿,git.ppt演示文稿,git.ppt演示文稿

    简易导航:HTML + CSS和Git介绍库

    本资源库,"简易导航:HTML + CSS和Git介绍库",显然是为了初学者提供一个学习这两门技术以及如何结合Git进行协作开发的平台。 HTML是构成网页的基本元素,它定义了网页的结构,如标题、段落、链接、图像等。HTML5...

Global site tag (gtag.js) - Google Analytics