Git框架命令集

8 篇文章 0 订阅
6 篇文章 1 订阅

思路图:

在这里插入图片描述你要说一篇git就能学会,我真的不信。那我们就按照标号顺序进行命令罗列。

一:git add 将该文件添加到暂存区

  1. 添加一个或多个文件到暂存区: bash git add [file1] [file2] ...
  2. 添加指定目录到暂存区,包括子目录:git add [dir]
  3. 添加当前目录下的所有文件到暂存区:git add .
  4. git add -u 提交被修改和被删除文件

二:git commit 将本地暂存的修改提交到版本库

  1. git commit -a -m '提交信息',-m参数是输入提交信息的,-a 参数就是可以把还没有执行add命令的修改一起提交
  2. git commit --amend 发现我写的提交信息不合规范,就可以修改上一次的提交信息
  3. 一般来说了解上述三种参数即可满足我们工作中的日常开发了

每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里.

在进入实例之前,我们先介绍几个命令

git status -s 或 git status --short 命令 以精简的方式显示文件状态。
git status 输出的命令很详细,但有些繁琐。
新添加的未跟踪文件前面有 ?? 标记,
新添加到暂存区中的文件前面有 A 标记,
修改过的文件前面有 M标记。
M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。

实例1 正常逻辑
创建文件及文件夹,并初始化仓库,进行查看

$ mkdir git_status
$ cd git_status/
:~/git_status$ touch readme.md
:~/git_status$ touch README
:~/git_status$ ls 
README  readme.md
:~/git_status$ git init 
已初始化空的 Git 仓库于 /home/ts/git_status/.git/
:~/git_status$ git status
位于分支 master
尚无提交
未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)
	README
	readme.md
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

将文件添加到暂存库,查看并提交,查看改动与第一次提交

:~/git_status$ git add
没有指定文件,也没有文件被添加。
也许您想要执行 'git add .'? 
:~/git_status$ git add .
:~/git_status$ git status
位于分支 master
尚无提交

要提交的变更:
  (使用 "git rm --cached <文件>..." 以取消暂存)
	新文件:   README
	新文件:   readme.md
:~/git_status$ git commit -m "the first time commit"
[master (根提交) a32a080] the first time commit
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README
 create mode 100644 readme.md
:~/git_status$ git status
位于分支 master
无文件要提交,干净的工作区
ts@ts-OptiPlex-7070:~/git_status$ git log
commit a32a08082bf48e3e8a0ef64c45d268a80f7119f2 (HEAD -> master)
Author: huangrui0922 <huangrui0922@thundersoft.com>
Date:   Tue Oct 27 16:32:08 2020 +0800

    the first time commit

更改README ,查看改动,并再次提交

:~/git_status$ vim README 
:~/git_status$ git status
位于分支 master
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

	修改:     README

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
:~/git_status$ git add README 
:~/git_status$ git status
位于分支 master
要提交的变更:
  (使用 "git reset HEAD <文件>..." 以取消暂存)

	修改:     README

:~/git_status$ git commit -m "second commit"
[master e43aa26] second commit
 1 file changed, 1 insertion(+)

查看改动

:~/git_status$ git status
位于分支 master
无文件要提交,干净的工作区
ts@ts-OptiPlex-7070:~/git_status$ git log
commit e43aa262233715a954d145ce238b17cd23556ab5 (HEAD -> master)
Author: huangrui0922 <huangrui0922@thundersoft.com>
Date:   Tue Oct 27 16:35:36 2020 +0800

    second commit

commit a32a08082bf48e3e8a0ef64c45d268a80f7119f2
Author: huangrui0922 <huangrui0922@thundersoft.com>
Date:   Tue Oct 27 16:32:08 2020 +0800

    the first time commit
ts@ts-OptiPlex-7070:~/git_status$ 

实例2 精简逻辑
git status命令用于显示工作目录和暂存区的状态。 使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。
我们添加两个文件:

$ touch README                # 创建文件
$ touch hello.php             # 创建文件
$ git status -s
?? README
?? hello.php
$ 

接下来我们执行 git add 命令来添加文件:

$ git add README hello.php 

现在我们再执行 git status,就可以看到这两个文件已经加上去了。

$ git status -s
A  README
A  hello.php

新项目中,我们可以使用 git add . 命令来添加当前项目的所有文件。
现在修改 README 文件:

$ vim README

在 README 添加以下内容:# Runoob Git 测试,保存退出。
再执行一下 git status:

$ git status -s
AM README
A  hello.php

AM 状态的意思是这个文件在我们将它添加到缓存之后又有改动。改动后我们再执行 git add . 命令将其添加到缓存中:

$ git add .
$ git status -s
A  README
A  hello.php

文件修改后,我们一般都需要进行 git add 操作,从而保存历史版本。

三:git checkout 检出(切换)分支

checkout命令用法如下:
1.

 git checkout [-q] [<commit>] [--] <paths> ...

命令举例(此命令用来放弃掉所有还没有加入到缓存区的修改)

  • git checkout -- filepathname 放弃单个文件修改,注意不要忘记中间的"–",不写就成了检出分支了
  • git checkout . // 放弃所有的文件修改

但是此命令不会删除掉刚新建的文件。那要是已经添加到缓存的修改呢?
命令举例(相当于撤销 git add 命令所在的工作)

  • git checkout HEAD filepathname //将分支HEAD的filepathname撤销

  • 也可以使用 git reset HEAD filepathname将分支HEAD的filepathname撤销

如果已经用 git commit 提交了代码(相当于撤销 git commit 命令所在的工作):

  • 可以使用 git reset --hard HEAD^ 来回退到上一次commit的状态。 此命令可以用来回退到任意版本:git reset --hard commitid

非常重要:如果省略commit,则会用暂存区的文件覆盖工作区中的文件,否则用指定提交中的文件覆盖暂存区和工作区中的对应文件
2.

git checkout [<branch>]
  • “分离头指针”状态:即git checkout HEAD^ 切换到HEAD的上一级commit
  • git checkout 后面不跟任何参数,则就是对工作区进行检查

非常重要:git checkout HEAD是会改变HEAD头指针的。而且只有当HEAD切换到某个分支的时候才可以对提交进行跟踪,否则就会进入“分离头指针”的状态。
3.

git checkout [-m] [ [-b | -- orphan ] <new_branch>]  [start_point] 
  • git checkout --detach <branch>切换到分支的游离状态,默认以该分支下的最后一次提交ID
  • git checkout -B <branch> 强制新建分支
  • git checkout -b <branch> 创建分支
  • git checkout --orphan 它会基于当前所在分支新建一个赤裸裸的分支,没有任何的提交历史,但是当前分支的内容一一俱全。新建的分支,严格意义上说,还不是一个分支,因为HEAD指向的引用中没有commit值,只有在进行一次git commit后,它才算得上真正的分支。
  • git checkout --merge <branch> 适用于在切换分支的时候,将当前分支修改的内容一起打包带走,同步到切换的分支下,但是有两个需要注意的,一:如果当前分支和切换分支间的内容不同的话,容易造成冲突。二:切换到新分支后,当前分支修改过的内容就丢失了。
  • git checkout -p <branch>这个命令可以用来打补丁。这个命令主要用来比较两个分支间的差异内容,并提供交互式的界面来选择进一步的操作。这个命令不仅可以比较两个分支间的差异,还可以比较单个文件的差异

四:git push 将本地版本库的分支推送到远程服务器上对应的分支

格式:

git push <远程主机名> <本地分支名> <远程分支名>
  • 例子: git push origin master:refs/for/master 将本地的master分支推送到远程主机origin上的:master分支, origin :程主机名

这个命令的差异无非就是哥哥“名”的省略带来的含义

  • git push origin master 远程分支被省略,则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,就会被新建
  • git push origin :refs/for/master 省略本地分支名,表示删除指定的远程分支,这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master
  • git push origin当前分支与远程分支存在追踪关系,则本地分和远程分支都可以省略,将当前分支推送到origin主机的对应分支
  • git push如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名
  • refs/for 的意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的,而refs/heads 不需要

五:git fetch/clone

  • git clone:拷贝一个 Git 仓库到本地
  • git fetch:一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令;

1.git clone

  • 拷贝一个 Git 仓库到本地,本地目录名称与Git 仓库同名
    git clone <版本库的网址>
  • 拷贝一个 Git 仓库到本地,重新定义本地目录名称
    git clone <版本库的网址> <本地目录名>
  • 拷贝一个指定分支到本地,本地目录名称与分支同名
    git clone -b 分支名 <版本库的网址>
  • 拷贝一个指定分支到本地,重新定义本地目录名称
    git clone -b 分支名 <版本库的网址> <本地目录名>

2.git fetch

$ git fetch <远程主机名> 将某个远程主机的更新,全部取回本地,git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响
$ git fetch <远程主机名> <分支名> 取回特定分支的更新,取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。如origin主机的master,要用origin/master读取

六:git pull 远程仓库中的更改合并到当前分支中

默认模式下 相当于 git fetch + git merge FETCH_HEAD 命令,更准确的说,git pull 相当于:
先执行git fetch + 指定参数,然后执行git merge 命令将检索到的分支合并到当前分支。

git pull过程:

  • git fetch origin master 先拉取,让本地的origin/master先更新到最新

      A---B---C master on origin
    /
    

    D—E---F—G master

  • git merge origin/master

           A---B-----C     origin/master
         /             \
       D---E---F---G--- H    master
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值