Git常用操作指令语法,通俗易懂简单明了

1. 初始化

1.1 初始化git目录

git init

1.2 设置字符编码

在git中默认编码会导致日志信息中文乱码,所以一般还会进行编码设置。

# 下面4个参数在 cmd 和 git bash 环境下都可以执行,由于是全局参数,所以执行一次即可
git config --global core.quotepath false 
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8 
git config --global i18n.logoutputencoding utf-8 

# LESSCHARSET 参数则命令不同,详见如下:
# git bash 环境下
export LESSCHARSET=utf-8
# cmd 环境下:
set LESSCHARSET=utf-8

注:其中上面的LESSCHARSET设置只对当前的命令窗口有效,所以要想全局有效,最好还是设置成为系统环境变量。在这里插入图片描述

2. 创建git忽略文件(.gitignore)

创建git版本控制的忽略文件,配置哪些文件或文件夹不需要被git进行跟踪管理

touch .gitignore

.gitignore文件每一行一个规则,可以使用通配符。

# 忽略所有class文件
*.class
# 忽略该文件夹下的所有文件
out/
# ......

3. 向暂存区(stage)添加文件

# 方式一、添加指定文件,可以有多个文件,用空格隔开
git add <file> <file2> <file3> ...
# 方式二、添加目录所有需要跟踪的文件
git add .

注:后续中的<files>则表名可以有多个文件,中间用空格隔开,如:<file> <file2> <file3> ...

4. 将暂存区文件提交到仓库

git commit -m "<提交的日志信息>..."

5. 查看状态命令(status)

查看git跟踪的当前状态。执行后会列出当前git跟踪的文件有哪些变化,一般有一下几种状态

git status

5.1 未添加到暂存区的文件

Untracked fiels表示该文件是新的未被git跟踪管理的文件

Changes not staged for commit表示该文件是有修改的老文件

deleted表示该文件之前有被跟踪但是现在被删除了

注:还没有添加到怎存取的文件,在查看状态时,文件的文件名显示为红色

5.2 已添加到暂存区但还未提交到仓库

new file表示该文件是新的被跟踪的文件

modified表示该文件是有修改的老文件

deleted表示该文件之前有被跟踪但是现在被删除了

注:还没有添加到怎存取的文件,在查看状态时,文件的文件名显示为绿色

6. 撤销和恢复

6.1 撤销工作区的修改

当文件修改后且没有添加到暂存区时,此时想要撤销工作区的修改,可以使用checkoutrestore命令

# 方式一
git checkout <files>或.
# 方式二(新版)
git restore <files>或.

6.2 撤销暂存区的修改

当文件修改并已经添加到暂存区但没有commit时,此时想要撤销暂存区的修改,可以使用resetrestore命令,执行后,暂存区的指定文件将会被撤销修改(即:从暂存区删除),但是工作区的文件不会发生变化,相当于撤销了git add的命令,使文件处于待添加到暂存区的状态()

# 方式一
git reset <files>或.
# 方式二(新版)
git restore --staged <files>或.

6.3 reset从仓库来恢复版本

从仓库来恢复,可以分为3个模式,soft,mixed,hard,其中如果没有指定该参数,则默认为mixed

# 总体语法
git reset --soft或mixed或hard 仓库版本(可以写id也可以写head~*等等)

6.3.1 soft(用的较少)

仅仅只是撤销已提交的版本库,不会修改暂存区和工作区(就像撤销commit一样,查看status时,显示的绿色,处于待提交状态)。如果需要将指定的版本继续恢复工作区的修改,请分别执行6.26.1中的命令即可

# 将仓库指定版本放入暂存区(staged),但是工作区并没有变化
git reset --soft 版本id或head~*

6.3.2 mixed(用的较少)

仅仅只是撤销已提交的版本库和暂存区,不会修改工作区(就像先撤销commit,然后再撤销add一样,查看status时,显示的红色,处于待添加到暂存区状态),此时工作区与暂存区就会存在差异,可以进行对比查看。如果需要将指定的版本继续恢复工作区的修改,请执行6.1中的命令即可

# 将仓库指定版本放入暂存区(staged),但是工作区并没有变化
git reset --mixed 版本id或head~*

6.3.3 hard(常用)

彻底将工作区、暂存区和版本库记录恢复到指定的版本库。查看status显示工作目录为干净状态,就像强制恢复到某个版本一样。

# 将仓库指定版本直接更新到工作区
git reset --hard 版本id或head~*

6.4 checkout从仓库恢复指定文件

当需要从版本仓库中恢复指定的文件到工作区时(不需要恢复整个版本),则可以使用checkout命令

git checkout 版本id或head~* <files>或.

7. 分支(branch)

7.1 创建分支

# 方式一、创建分支后,不会切换到新建的分支,仍然停留在原始分支
git branch <分支名称>
# 方式二、创建分支后,同时会切换到新创建的分支
git checkout -b <分支名称>
# 方式三(新版)、创建分支后,同时会切换到新创建的分支
git switch -c <分支名称>

7.2 切换分支

# 方式一
git checkout <分支名称>
# 方式二(新版)
git switch <分支名称>

7.3 合并分支

一般在合并前,先切换到上级分支或主线分支(如:master),因为一般是将支线分支合并到主线分支

git checkout master

7.3.1 无冲突合并(快速合并)

# 无冲突合并分支
git merge <分支名称>

当合并分支没有冲突时,则会执行快速合并,此时只需要移动HEAD指针即可,合并完成后会有Fast-forward提示,表示当前合并为快速合并

7.3.2 有冲突合并

# 有冲突合并分支
git merge <分支名称>
# 当提示 CONFLICT.....<file>时,表示有文件冲突
<手动处理有冲突的文件>此步骤省略...
# 手动处理冲突文件后,再重新提交
git add .
git commit -m "<提交日志...>"

当合并分支有冲突时,会提示有冲突的文件CONFLICT (content): Merge conflict in <file>,此时需要手动处理有冲突的文件的修改,在手动处理完有冲突的文件后,最后在重新添加到暂存区和提交到仓库。

在手动处理有冲突的文件时,会看到Git用<<<<<<<=======>>>>>>>标记出不同分支的内容。

如:在master分支上开启新的分支dev后,然后在master和dev2个分支上都对同一个文件进行了修改,因此在合并时,才会导致合并冲突,因为git不知道该保留哪个分支的修改,所以需要人工手动处理。

7.4 删除分支

git branch -d <分支名称>

8. 远程仓库

8.1 远程仓库克隆

将远程仓库的整个项目克隆到本地。同一个目录只能克隆一次。

# 克隆远程仓库
git clone <url>

8.2 远程仓库别名

给远程仓库的url添加一个别名,这样用别名来代替URL,操作起来更方便。

# 添加远程仓库url并指定别名,其中<分支名>可以省略,默认为master
git remote add <别名> <分支名> <url>

# 查看已经保存的远程仓库别名
git remote -v

8.3 pull从远程仓库拉取到本地

将远程仓库的项目拉取到本地。

git pull <远程主机名> <远程分支>:<本地分支>

其中本地分支可以省略,例如:

# 将远程仓库的master分支拉取到本地,本地分支省略,则为当前分支
git pull origin master
# 将远程仓库的master分支拉取到本地与本地的dev分支进行合并
git pull origin master:dev
# 将远程仓库的master分支强制拉取到本地并进行合并
git pull --rebase origin master

8.4 push从本地提交到远程仓库

将本地仓库提交到远程仓库。

git push <远程主机名> <本地分支名> <远程分支名>

其中远程分支可以省略。例如:

# 将本地分支提交到与远程同名的分支,若远程分支不存在,则会新建
git push origin master

# 如果当前分支与多个主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push
git push -u origin master

# 当遇到这种情况就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要 -all 选项
git push --all origin

# git push的时候需要本地先git pull更新到跟服务器版本一致,如果本地版本库比远程服务器上的低,那么一般会提示你git pull更新,如果一定要提交,那么可以使用这个命令。
git push --force origin

一般情况,当从提交本地仓库到远程仓库时,先会进行git pull origin master一下,同步本地与远程仓库的版本,之后再进行git push。但是,如果远程仓库版本比本地仓库版本更新时,会提示error: failed to push some refs to错误,此时需要执行如下命令:

# 选择一:要么继续拉取,完成拉取的操作,之后就可以push了
git rebase --continue

# 选择二:取消拉取,放弃拉取的操作
git rebase --abort

9.常见问题

9.1 文件未修改但是git仍然提示有变动

待续

9.2 git本地仓库文件损坏(意外断电或蓝屏等等)

使用fsck命令来本地指定仓库的一致性检查,执行后,会列出哪些git文件检查不通过(即:文件损坏了),然后自己进入.git文件夹中,将对应的损坏文件手动删除掉;

# 先使用fsck命令来检查git本地仓库
git fsck --full

然后执行fetch命令从远程仓库拉取新的版本;

# 从远程仓库拉取所有分支
git fetch --all

最后切换的指定的分支即可,然后就可以正常的pullpush了。

# 强制切换分支
git reset --hard origin/master
# 重新拉取
git pull

9.3 强制覆盖本地仓库

依次分别执行以下命令:

# 1.从远程仓库拉取所有分支
git fetch --all
# 2.强制切换分支到指定分支
git reset --hard origin/master
# 3.重新拉取(此时已经是最新的了,这里的拉取只是为了验证是否拉取正常)
git pull
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值