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

    git初始化

    设置你的名字和email,这些是你再提交commit时的签名,每次提交记录中都会包含这些信息。

    使用git config命令进行配置:

    git config --global user.name 'haohj'
    git config --global user.email 'haohj@outlook.com'
    

    执行了上面的命令后,就会在C:UsersAdministrator下建立一个叫.gitconfig的文件(Administrator是我本机的用户名)。内容一般是像下面这样的

    [user]
    	email = haohj@outlook.com
    	name = haohj
    

    上面的配置文件就是Git全局配置文件,一般的配置方法是git config --global <配置名称> <配置的值>。

    如果你想使项目里的某个值与前面的全局设置有区别(例如把私人邮箱地址改为工作邮箱),你可以在项目中使用git config命令不带 --global选项来设置。这会在你当前的项目目录下创建.git/config,从而使用针对当前项目的配置。

    获得一个Git仓库

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

    Clone一个仓库

    git clone https://github.com/haohj/gitproject
    

    初始化一个新的仓库

    对一个已存在的文件夹使用下面的命令让它置于Git的版本控制管理之下。

    git init
    

    正常的工作流程

    git的基本工作流程如下:

    1. 创建或修改文件
    2. 使用git add命令添加新创建或修改的文件到本地的缓存区(Index)
    3. 使用git commit命令提交到本地代码库
    4. (可选,有的时候并没有可以同步的远端代码库)使用git push命令将本地代码库同步到远端代码库

    创建或修改文件

    在项目目录下创建一个文件,比如我们创建一个README.md文件。

    创建完可以使用git status命令查看当前git仓库的状态,可以发现刚刚创建的文件处于untracked状态,下一步我们需要使用git add命令将这些文件加入到缓存区(Index)。

    使用git add加入缓存区

    使用git add命令将新建的文件添加到缓存区:

    git add README.md
    

    使用git commit提交修改

    当所有新建,修改的文件都被添加到了缓存区,我们就需要使用git commit提交到本地仓库

    git commit -m "add README.md"
    

    注意

    • 新建文件,修改文件,都需要使用git add命令添加到缓存区才可以提交。
    • 删除文件,则需要直接使用git rm命令删除后会自动将已删除文件的信息添加到缓存区,git commit提交后就会将本地仓库中的对应文件删除。

    如果我们还希望将本地仓库关联到远端服务器,我们可以使用git remote命令,不同于git clone命令,直接将远端的仓库克隆下来。如果我们当前的仓库是使用git init初始化的本地仓库,那么我们需要将本地仓库与远程仓库关联,使用如下命令(需要修改下面的远程仓库地址为自己的仓库地址

    git remote add origin https://github.com/haohj/gitproject.git
    

    对于上述命令而言,git remote add命令用于添加远程主机,origin是主机名,此处我们可以自定义,不一定非要使用origin。

    这个时候如果本地的仓库连接到了远程Git服务器,可以使用下面的命令将本地仓库同步到远端服务器:

    git push origin 
    

    分支与合并

    Git的可以让你在主线(master分支)之外进行代码提交,同时又不会影响代码库主线。分支的作用体现在多人协作开发中,比如一个团队开发软件,你负责独立的一个功能需要一个月的时间来完成,你就可以创建一个分支,只把该功能的代码提交到这个分支,其它同事仍然可以继续使用主线开发,你每天的提交不会对他们造成任何影响。当你完成功能后,测试通过再把你的功能分支合并到主线。

    创建分支

    一个Git仓库可以维护很多开发分支。现在我们来创建一个新的叫test的分支:

    git branch test
    

    运行git branch命令可以产科当前的分支列表,以及目前的开发环境处在哪个分支上。

    snapshot_1536889561734.png

    切换分支

    通过刚才的查看分支命令我们可以看到,test分支是我们刚才创建的,master分支是Git系统默认创建的主分支。星号标识了你当前工作在哪个分支下。使用如下命令可以切换到其它分支:

    git checkout test
    

    切换到test分支,切换完成后,我们先编辑一下里面的一个文件,再提交(commit)改动,最后切回“master”分支

    snapshot_1537152975156.png

    这时我们会发现刚刚修改的内容看不到了。这是因为我们刚刚是在test分支下修改的,现在切换回了master分支,目录下的文件都是master分支上的文件了。

    合并分支

    现在我们在master分支上继续做一些不同的修改

    snapshot_1537153361424.png

    这时两个分支有了各自不同的修改,分支内容都已经不同了,需要使用git merge命令来合并test到主线分支master。

    snapshot_1537153562456.png

    -m参数仍然是需要填写合并的注释信息。

    • 如果两个分支修改的文件不同,那么就不会有冲突,执行上面的命令后合并就完成了。
    • 如果两个分支都修改了同一个文件,则合并失败。

    我们刚刚的修改就是第二种情况,现在合并失败了。这时我们用git status命令查看状态会发现文件显示both modified。

    snapshot_1537153954684.png

    查看文件就会看到文件中有git自动产生的冲突<<<<<<<<<符号

    snapshot_1537154192844.png

    这时需要我们手动解决冲突然后再重新提交。

    删除分支

    当我们完成合并后,不再需要test时,可以使用下面的命令删除:

    git branch -d test
    

    git branch -d只能删除那些已经被当前分支合并的分支。如果你要强制删除某个分支的话就需要用git branch -D

    撤销一个合并

    如果你觉得你合并后的文件有问题,想把当前的修改都放弃,可以使用下面的命令回到合并之前的状态:

    git reset --hard HEAD^
    

    快速向前合并

    还有一种需要特殊对待的情况在前面没有提到。通常,一个合并会产生一个合并提交(commit),把两个父分支的每一行内容都合并进来。

    但是,如果当前的分支和另一个分支没有内容上的差异,就是说当前分支的每一个提交(commit)都已经存在另一个分支里了,git就会执行一个“快速向前”(fast forward)操作;git不创建任何新的提交(commit),只是将当前分支只想合并进来的分支。

    Git日志

    查看日志

    git log命令可以显示所有的提交(commit):

    git log
    

    如果提交的历史记录很长,回车会逐步显示,输入q可以退出。

    git log有很多选项,可以使用git help log查看。Git会根据git log命令的参数,按时间顺序显示相的提交。

    日志统计

    如果使用--stat选项使用git log,则会显示在每个提交中哪些文件被修改了,这些文件分别添加或删除了多少行内容,这个命令相当于打印详细的提交记录。

    git log --stat
    

    格式化日志

    你可以按你的要求来格式化日志输出。--pretty参数可以使用若干表现格式,如oneline:

    git log --pretty=oneline
    

    或者你也可以使用short格式:

    git log --pretty=short
    

    你也可以用medium,full,fuller,email或raw。如果这些格式不完全符合你的需求,你也可以用--pretty=format参数定义格式。

    --graph选项可以可视化你的提交图,会用ASCII字符来画出一个很漂亮的提交历史(commit history)线:

    git log --graph --pretty=oneline
    

    日志排序

    日志记录可以按不同的顺序来显示。如果你要指定一个特定的顺序,可以为git log命令添加顺序参数。

    按默认情况,提交会按照时间逆序排列显示,可以指定--topo-order参数,让提交按拓扑顺序来先(就是子提交在它们的父提交前显示)。

    git log --pretty=format:'%h : %s' --topo-order --graph
    

    你也可以用--reverse参数来逆向显示所有提交日志。

  • 相关阅读:
    使用汇编语言编写注入代码
    代码注入
    DLL卸载
    DLL注入
    nginx图片防盗链
    apache字体文件跨域、路由去掉index.php
    windows下访问虚拟机中配置的虚拟主机
    deepin docker 安装
    Deepin 配置ssh
    下拉框多选
  • 原文地址:https://www.cnblogs.com/haohj/p/9681687.html
Copyright © 2011-2022 走看看