menu Hyou
主页
分类
标签
关于
color_lens

... Rei ...

... cjlmonster@163.com ...

... 白开水与方便面 ...

home
主页
chevron_right
local_library
分类
chevron_right
local_offer
标签
chevron_right
brightness_auto
关于
chevron_right

标签云

Git常用命令

2021-06-09 约 521 字 预计阅读 3 分钟 Git

仓库配置

git config

git 的仓库配置有三个地方,分别是:

  • local:其表示当前项目或仓库配置,优先级最高;
  • global:用户配置,优先级次之,local没配置时,将启用global配置;
  • system:系统配置,优先级最低,当前面都没配置时,启用这里的配置;
git config --local [ -l | --list ] 查看当前仓库配置
git config --global [ -l | --list ] 查看用户配置
git config --system [ -l | --list ] 查看系统配置
git config --local user.name mint 配置当前仓库的用户名为 mint
git config --local user.email mint@163.com 配置当前仓库的邮箱为 mint@163.com
git config --local user.name 置当前仓库的用户名
git config --local user.email 配置当前仓库的邮箱

仓库创建

git创建仓库两种方式,分别是:

  1. git init: 初始化一个本地仓库
  2. git clone:从远程仓库拷贝一个仓库到本地

git init

$ git init [--bare] [directory]

  • 在当前目录初始化一个Git仓库git init
  • 指定目录初始化仓库git init [directory],[directory] 替换成目标目录。
  • 执行完 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。

ps: 加上参数 --bare,即git init --bare,顾名思义,生成一个裸仓库,一般用于服务器端搭建远程Git服务器使用,这种方式创建的仓库,不会生成 .git 目录,而是直接把 .git 目录里原本要生成为文件和文件夹放到仓库根目录里,因此它是没有工作区的,只会记录git提交的历史信息,git log一下是可以看到各个版本信息的,但是没办法进行版本回退或者切换分支的操作,维护了远程仓库的“干净”,反正远程仓库只用于共享,也没必要远程登录去操作仓库。

git clone

拷贝远程仓库到本地

$ git clone [repository] [directory]

[repository] 远程仓库链接,支持HTTPS和SSH 必填
[directory] 远程仓库的新目录名 可选

提交与修改

git status

查看仓库当前的状态,显示有变更的文件

git add

添加已修改的文件到暂存区 ​

常用指令

git add [file1] [file2] [file3] … 添加已修改文件到暂存区,多个文件以空格间隔
git add [dir] 添加指定目录到暂存区,包括子目录
git add . 添加所有已修改文件到暂存区
git add -A git add .

git commit

提交暂存区到工作区

git commit -m [message] 提交暂存区到本地仓库中,[message] 可以是一些备注信息,备注信息含有空格或一些特殊字符时,要加引号,在Linux系统中用单引号,Windows用双引号
git commit [file1] [file2] … -m [message] 提交暂存区的指定文件到仓库区,多个文件以空格间隔

git rm

当文件已添加到暂存区或工作区时,可用这个命令进行删除

git rm 从分支里删除指定文件。支持通配符,如删除所有.txt文件,可以这样输入git rm *.txt,下面命令同
git rm -f 从暂存区删除指定文件
git rm --cached 从暂存区或分支里移除文件下来,放回工作区,不删除
git rm –r * 可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件

git mv

移动或重命名一个文件、目录或软连接

git mv [file] [newfile] 移动或重命名一个文件、目录或软连接
git mv -f [file] [newfile] 如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数

git diff

  • 用于比较文件的不同,暂存区和工作区的差异,或暂存区与上一次提交的不同
git diff [file] 当文件已修改时还未添加到暂存区,则显示与暂存区或工作区的差异
git diff --cached [file] 当文件已被修改且已添加到暂存区,则显示暂存区和上一次提交(commit)的差异

git reset

用于回退版本,可以指定退回某一次提交的版本

$ git reset [--mixed | --soft | --hard] [HEAD]

--mixed 用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。默认选项,可以不填
--soft 撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本
--hard 撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交(慎重操作)

HEAD 说明:

  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推…

可以使用 ~数字表示

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • HEAD^3 上上上一个版本
  • 以此类推…

git reset [commit id]

  • 回退到指定 [commit id] 的版本,[commit id]可以通过git log命令查看

image.png 如上图所示,类似 “commit 04c213e8842fe55b2f6895598b5151cdaee209e9” 里的 “04c213e…”就是某次提交的 commit id,想要回退到这个版本,可以输入commit id,即git reset 04c213e,commit id 可以不用写全,写前面几位就可以,当然也不能太少,至少5位吧 ​

git reset HEAD

  • 重置暂存区,把添加到暂存区的所有文件放回到工作区

查看日志

git log

查看历史提交记录,存在多个记录时,以分页显示,按空格加载更多,按q退出查看。想要查看最新的提交记录git log -1,查看上一条记录git log -2,查看上上条记录git log -3,以此类推

git blame

以列表形式查看指定文件的历史修改记录。

$ git blame

远程操作

git remote

  • 添加远程仓库,[remote name] 为远程仓库设置别名,一般设为 origin,[url] 为远程仓库地址,HTTPS 链接或 SSH 地址

$ git remote add [remote name] [url]

  • 添加远程仓库后,需要把本地仓库推送到远程仓库去,以建立连接,首次推送需要加 -u 参数,origin 为远程仓库别名, master 主分支名

$ git push -u origin master

  • 查看远程仓库的具体信息,[remote name] 为 git remote add添加的远程仓库的别名

$ git remote show [remote name]

  • 查看所有远程仓库

$ git remote -v

  • 删除远程仓库

$ git remove rm [remote name]

  • 修改仓库名

$ git remote rename old_name new_name

git fetch

  • 抓取更新,一般情况下,操作步骤如下:
    1. 抓取全部更新:git fetch <remote name>
    2. 抓取某个分支的更新:git fetch <remote name> <remote branch name>
    3. 抓取更新后,会返回一个 FETCH_HEAD,指的是某个分支在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息,查看命令为:git log -p FETCH_HEAD
    4. 查看更新信息后,没有冲突或冲突已解决,就可以合并到主分支或其它分支上,假设合并到当前分支上:git merge FETCH_HEAD,合并到其它分支,就先切换到别的分支上,在执行合并命令

git pull

  • 抓取更新并合并到本地仓库,其实就是 git fetch 和 git merge FETCH_HEAD 的简写

$ git pull [remote name] [remote branch name]:[local branch name]

  • 如果远程分支是与当前分支合并,则冒号后面的部分可以省略

$ git pull [remote name] [remote branch name]

git push

  • 将本地的分支版本上传到远程并合并

$ git push <remote name> <local branch name>:<remote branch name>

#####如果本地分支名与远程分支名相同,则可以省略冒号#####
$ git push <remote name> <local branch name>

  • 如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数,分支名相同可省略冒号

$ git push --force <remote name> <local branch name>:<remote branch name>

#####如果本地分支名与远程分支名相同,则可以省略冒号#####
$ git push --force <remote name> <local branch name>

  • 删除远程仓库的某个分支可以使用 --delete 参数

$ git push <remote name> --delete <remote branch name>

###或不加 --delete 参数###
$ git push <remote name> :<remote branch name>

分支操作

git branch

  • 查看分支

$ git branch [-r]

  • 创建分支

$ git branch <branch name>

  • 删除分支

$ git branch -d <branch name>

git checkout

  • 切换分支

$ git checkout <branch name>

  • 创建并切换到分支

$ git checkout -b <branch name>

git merge

  • 合并分支,一般是切换主分支 一般为 master,然后使用 git merge命令合并其它从分支

$ git merge <branch name>

copyright 2021 cjlmonster | 粤ICP备2021067029号 | 粤公网安备 44132302100200号
设置文档主题

主题色

主色

强调色