zoukankan      html  css  js  c++  java
  • Git常用命令

    Git版本控制下的工程区域只有三种
    1.版本库(Repository)
    在工作区中有一个隐藏目录.git,这个文件夹就是Git的版本库,里面存放了Git用来管理该工程的所有版本数据,也可以叫本地仓库
    2.工作区(WorkingDirectory)
    日常工作的代码文件或者文档所在的文件夹
    3.暂存区(stage)
    一般存放在工程根目录.gitindex文件中所以我们也可以把暂存区叫作索引(index)

    Git版本控制下的文件状态只有三种

    1.已提交(committed)
    该文件已经被安全地保存在本地数据库中了
    2.已修改(modified)
    修改了某个文件,但还没有提交保存
    3.已暂存(staged)
    把已修改的文件放在下次提交时要保存的清单中

    工程准备
    git init用于在本地目录下新建git项目仓库。
    执行git init后,当前目录下自动生成一个名为.git的目录,这代表当前项目所在目录已纳入Git管理。.git目录下存放着本项目的Git版本库
    下图可知,Git仓库下的.git目录默认是不可见的,有一定程度上是出于防止用户误操作考虑

    git clone用于克隆远端工程到本地磁盘
    本地命令行执行git clone [URL]

    新增/删除/移动文件到暂存区
    在提交你修改的文件之前,需要git add把文件添加到暂存区
    如果该文件是新创建,尚未被git跟踪的,需要先执行git add将该文件添加到暂存区,再执行提交。如果文件已经被git追踪,即曾经提交过的。在早期版本的git中,需要git add再提交;在较新版本的git中不需要git add即可提交。

    git rm将指定文件彻底从当前分支的缓存区删除,因此它从当前分支的下一个提交快照中被删除。
    如果一个文件被git rm后进行了提交,那么它将脱离git跟踪,这个文件在之后的节点中不再受git工程的管理。
    执行git rm后,该文件会在缓存区消失。你也可以直接从硬盘上删除文件,然后对该文件执行git commit,git会自动将删除的文件从索引中移除,效果一样。

    git mv命令用于移动文件,也可以用于重命名文件。
    例1:需要将文件git_test.txt 从当前目录移动到config目录下,可执行

    git mv git_test.txt config

    例2:需要将文件git_test.txt 重命名为new_git_test.txt,可执行:

    git mv config/git_test.txt config/new_git_test.txt

    查看工作区
    git diff用于比较项目中任意两个版本(分支)的差异,也可以用来比较当前的索引和上次提交间的差异。
    比较两个节点之间的差异


    比较两个分支之间的差异

    当前的索引和上次提交间的差异



    在diff后面加--name-status参数,只看文件列表

    git status命令用于显示工作目录和暂存区的状态。
    使用此命令能看到修改的git文件是否已被暂存,新增的文件是否纳入了git版本库的管理。下例中的信息表明:git1.txt已被修改并暂存,git2.txt已被修改但未暂存,git3.txt已被删除并暂存,git4.txt已被新建但未跟踪。


    提交更改的文件
    git commit主要是将暂存区里的文件改动提交到本地的版本库
    git commit一般需要附带提交描述信息,所以常见用法是:git commit filename -m “commit message”
    提交成功后,git日志可查到此次提交的id和提交的描述信息
    如果要一次性提交所有在暂存区改动的文件到版本库,可以执行git commit -am “comitmessage”

    查看日志
    git log用于查看提交历史
    默认不加其他参数的话,git log会按提交时间由近到远列出所有的历史提交日志。每个日志基本包含提交节点、作者信息、提交时间、提交说明等。
    常用的日志命令格式:git log
    git log配合不同参数具有相当灵活强大的展示功能,常见的如--name-status/-p/--pretty/--graph等等。


    推送至远端仓库
    在使用git commit命令将自己的修改从暂存区提交到本地版本库后,可以使用git push将本地版本库的分支推送到远程服务器上对应的分支。
    成功推送远端仓库后,其他开发人员可以获取到你新提交的内容。
    常用的推送命令格式:git push origin branch_name
    branch_name决定了你的本地分支推送成功后,在远端服务器上的分支名,其他人据此可以获取该分支上的改动内容。
    你的本地分支名可以与推送到远端的分支名不同:git push origin branch_name:new_branch_name

    分支管理
    git branch命令可查看本地工程的所有git分支名称。
    其中master分支前面的“*”表示当前工作区所在的分支是master。

    如果想查看远端服务器上有哪些分支,执行git branch -r,返回的分支名带origin前缀,表示在远端;如果想查看远端服务器和本地工程所有分支,那么执行git branch -a。


    新建分支命令:git branch new_branch_name/git checkout -b branch_name
    git branch和git checkout -b都可以用于新建分支(默认基于当前分支节点创建)
    git branch新建分支后并不会切换到新分支;
    git checkout -b新建分支后会自动切换到新分支。

    git branch -d和git branch -D都可以用来删除本地分支,后者大写表示强制删除。
    有时候当事分支上包含了未合并的改动,或者当事分支是当前所在分支,则-d无法删除,需要使用强制删除来达到目的。
    常用的删除分支命令格式:git branch -d branch_name/git branch -D branch_name删除服务器上的远程分支可以使用git branch -d -r branch_name,其中branch_name为本地分支名,删除后,还要推送到服务器上才行,即git push origin:branch_name


    git checkout命令除了创建分支,还用来切换分支,当然比较官方的叫法是“检出”。
    有时候当前分支工作区存在修改而未提交的文件,与目的分支上的内容冲突,会导致checkout切换失败,这时候,可以使用git checkout -f进行强制切换。
    常用的切换分支命令格式:git checkout branch_name

    git checkout对象可以是分支,也可以是某个提交节点或者节点下的某个文件

    git pull的作用是从远端服务器中获取某个分支的更新,再与本地指定的分支进行自动合并。
    命令格式:git pull origin remote_branch:local_branch
    如果远程分支和本地分支相同,直接执行:git pull origin remote_branch


    git fetch的作用是,从远端服务器中获取某个分支的更新到本地仓库。
    与git pull不同,git fetch在获取到更新后,并不会进行合并(即git merge)操作,这样能留给用户一个操作空间,确认git fetch内容符合预期后,再决定是否手动合并节点。
    常用的获取远端分支更新命令格式:git fetch origin remote_branch:local_branch
    如果远程分支和本地分支相同,直接执行:git fetch origin remote_branch

    分支合并
    git merge命令是用于从指定的分支(节点)合并到当前分支的操作。
    git会将指定的分支与当前分支进行比较,找出二者最近的一个共同节点base,之后将指定分支在base之后分离的节点合并到当前分支上。分支合并,实际上是分支间差异提交节点的合并。
    命令格式:git merge branch_name

     

    如果你要将其他分支的提交节点合并到当前分支,那么git rebase和git merge都可以达到目的。
    常用的合并命令格式:git rebase branch_name

    git rebase、git merge背后的实现机制和对合并后节点造成的影响有很大差异,有各自的风险存在。

    撤销操作
    git reset通常用于撤销当前工作区中的某些git add/commit操作,可将工作区内容回退到历史提交节点。
    命令格式:git reset commit_id


    撤销操作
    git checkout .用于回退本地所有修改而未提交的文件内容。
    git checkout .这是条有风险的命令,因为它会取消本地工作区的修改(相对于暂存区),用暂存区的所有文件直接覆盖本地文件,达到回退内容的目的。但它不给用户任何确认机会,所以谨慎使用。
    常用的回退命令格式:git checkout .
    如果仅仅想回退某个文件的未提交改动可以使用git checkout -filename来达到目的;如果想将工作区回退(检出)到某个提交版本,可以使用git checkout commit_id。

  • 相关阅读:
    只打开一次浏览器,生成html测试报告<小紧张中......>
    hadoop学习第四天-Writable和WritableComparable序列化接口的使用&&MapReduce中传递javaBean的简单例子
    hadoop学习第三天-MapReduce介绍&&WordCount示例&&倒排索引示例
    hadoop学习第二天-了解HDFS的基本概念&&分布式集群的搭建&&HDFS基本命令的使用
    hadoop学习第一天-hadoop初步环境搭建&伪分布式计算配置(详细)
    大三了,写写博客
    方向问题
    第一天注册博客
    jquery跨域请求事例
    ECharts学习记录
  • 原文地址:https://www.cnblogs.com/terryzh/p/15113980.html
Copyright © 2011-2022 走看看