Git实战教程-基本用法(上)——入门上手笔记

一、Git的介绍

  • Git是一个版本控制的软件,可以在本地设置仓库。
  • gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。

二、Git的初始化

配置方法: git config --global <配置名称> <配置的值>

首先设置用户名和邮箱:

  • $ git config --global user.name “Scott Chacon”
  • $ git config --global user.email “schacon@gmail.com”

你可以在项目中使用 git config 命令不带 --global 选项来设置. 这会在你当前的项目目录下创建 .gitconfig(使用ls -al才能查看),从而使用针对当前项目的配置。

三、获得一个Git仓库

(一)通过clone获得仓库

从已有的Git 仓库中 clone (克隆,复制)获得

  • $ cd /home/shiyanlou/
  • $ git clone https://github.com/shiyanlou/gitproject

(二)通过新建获得仓库

初始化新仓库,把未进行版本控制的文件进行版本控制。

  • $ cd /home/shiyanlou/
  • $ mkdir project
  • $ cd project
  • $ git init //正式开始 必须先初始化
Initialized empty Git repository in /home/shiyanlou/project/.git/

四、正常的工作流程

(一)创建或修改文件

新建三个文件:

  • $ cd /home/shiyanlou/project
  • $ touch file1 file2 file3

修改文件(也可以用vim):

  • $ echo “test” >> file1
  • $ echo “test” >> file2
  • $ echo “test” >> file3

使用 git status 命令查看当前 Git 仓库的状态结果如下:

$ git status
On branch master

Initial commit

Untracked files:
   (use "git add <file>...") to include in what will be committed)

       file1
       file2
       file3
nothing added to commit but untracked files present (use "git add" to track)

(二)使用 git add 命令添加新创建或修改的文件到本地的缓存区(Index)

使用git add命令是它们加入缓存区(Index)完成①:

  • $ git add file1 file2 file3

你可以使用 git diff 命令再加上 --cached 参数,看看缓存区中哪些文件被修改了

  • $ git diff --cached

如果没有–cached参数,git diff 会显示当前你所有已做的但没有加入到缓存区里的修改。

(三)使用 git commit 命令提交到本地代码库

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

  • $ git commit -m “add 3 files”

需要使用 -m 添加本次修改的注释,完成后就会记录一个新的项目版本还可以用下面的 -a 参数将所有没有加到缓存区的修改也一起提交,但 -a 命令不会添加新建的文件。

  • $ git commit -a -m “add 3 files”

如果是删除文件,则直接使用 git rm 命令删除后会自动将已删除文件的信息添加到缓存区,git commit 提交后就会将本地仓库中的对应文件删除。

(四)使用git push命令将本地代码库同步到远端代码库(可选,有的时候并没有可以同步的远端代码库)

  • $ git remote add origin https://github.com/highertq/test.git

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

使用下面的命令把本地仓库同步到服务器:

  • $ git push origin master

五、合并与分支

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

(一)创建分支

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

  • $ git branch experimental

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

  • $ git branch
experimental
* master 

(二)切换分支

  • git checkout 分支名 可以切换到其他分支

分支上创建或修改的内容不会与其他分支混淆,例如在分支1上创建了文件1,切换回分支2是不会显示文件1的。

(三)合并分支

切换到master分支

  • $ git checkout master

将experimental分支合并到master

  • $ git merge -m ‘merge experimental branch’ experimental

如果两个分支都修改了同一个文件就会产生冲突,则会合并失败,比如两个分支都改了一个文件 file3,首先我们在master分支上修改file3 文件并提交,然后切换到 experimental,修改 file3 并提交。再进行合并。如果合并失败则检查catfileupfile3中是否有自动产生的冲突标志,删除即可。

(四)删除分支

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

  • $ git branch -d experimental

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

(五)撤销一个合并

如果你觉得你合并后的状态是一团乱麻,想把当前的修改都放弃,你可以用下面的命令回到合并之前的状态:

  • $ git reset --hard HEAD^

(六)快速向前合并

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

六、Git日志

(一)查看日志

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

  • $ git log

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

(二)日志统计

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

  • $ git log --stat

(三)格式化输出日志

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

  • $ git log --pretty=oneline

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

  • $ git log --pretty=short

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

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

  • $ git log --graph --pretty=oneline

(四)日志排序

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

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

  • $ git log --pretty=format:’%h : %s’ --topo-order --graph

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

七、小结

几个基本命令:

  • git config:配置相关信息
  • git clone:复制仓库
  • git init:初始化仓库
  • git add:添加更新内容到索引中
  • git diff:比较内容
  • git status:获取当前项目状况
  • git commit:提交
  • git branch:分支相关
  • git checkout:切换分支
  • git merge:合并分支
  • git reset:恢复版本
  • git log:查看日志
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值