Git 常用命令总结

Git常用命令总结

整体指令还是比较多,先放几个最最常用的指令

# 初始化代码仓库
git init

# 把需要提交的所有修改放到暂存区(Stage)
git add <file>

# 提交所有文件
git add . 

# 提交代码
git commit -m "commit_info"

# 创建分支:
git branch <name>

# 切换分支(方法一):
git checkout <name>

# 切换分支(方法二):
git switch <name>

# 查看本地分支
git branch

# 合并分支
git merge <name>

# 普通模式合并,不会丢掉分支信息。
git merge --no-off "commit_info" <name>

# 删除分支(一般删除)
git branch -d <name>

# 强制删除
git branch -D <name>

# 第一次将本地库的所有内容推送到远程库上
git push -u origin master [-f]

# 此后,每次本地提交后,就可以使用命令推送最新修改
git push origin master

一、版本库原理

工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

Git 的版本库里存了很多东西,其中最重要的就是称为 stage的暂存区,还有 Git 为我们自动创建的第一个分支master,以及指向 master的一个指针叫 HEAD

在这里插入图片描述
我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用 git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用 git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建 Git 版本库时,Git 自动为我们创建了唯一一个 master 分支,所以,现在,git commit就是往 master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改
第三步 也是最后一步,使用git push将代码推送到远程仓库(在这个之前一般要创建分支等等)

二、创建版本库

# 创建文件
mkdir myapp

# 进入文件
cd myapp

# 初始化代码仓库
git init

# 把需要提交的所有修改放到暂存区(Stage)
git add <file>

# 提交所有文件
git add . 

# 提交所有.js格式文件
git add *.js

# 强制添加
git add -f <file>

# 提交代码
git commit -m "commit_info"

三、查看

# 查看历史记录,git log命令显示从最近到最远的提交日志
git log

# 查看分支合并图
# 加上 --oneline 可以让合并图更加美观
git log --graph
git log --graph --oneline

# Git提供了一个命令git reflog用来记录你的每一次命令:
git reflog

# git status命令用于显示工作目录和暂存区的状态。
# 使用此命令能看到那些修改被暂存到了。
# git status不显示已经commit到项目历史中去的信息。
git status

# 当暂存区中没有文件时,git diff比较的是,工作区中的文件与上次提交到版本库中的文件。
# 当暂存区中有文件时,git diff则比较的是,当前工作区中的文件与暂存区中的文
git diff

# 比较工作区中的文件与版本库中文件的差异。
# HEAD指向的是版本库中的当前版本,而file指的是当前工作区中的文件。
git diff HEAD -- <file>

四、版本回退

Git 必须知道当前版本是哪个版本,在 Git 中,用 HEAD 表示当前版本,上一个版本就是 HEAD^,上上一个版本就是 HEAD^^,当回退版本较早时可以写成 HEAD~100 。

穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。

git reset --hard HEAD^
git reset --hard HEAD@{0}

# 取消回退,commitId为你想要回到的未来版本号
git reset --hard commit_id

五、撤销修改

这里有两种情况:

  • 一种是 file 修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  • 一种是 file 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
# 文件在工作区的修改全部撤销
git checkout -- <file>

# 把暂存区的修改撤销掉,重新放回工作区
git reset HEAD <file>

六、删除文件

命令 git rm 用于从版本库删除一个文件。
如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

# 从版本库删除一个文件
git rm <file>

提示:先手动删除文件,然后使用 git rm <file>git add <file>效果是一样的。

七、分支管理

  • 创建/切换分支
# 创建分支:
git branch <name>

# 切换分支(方法一):
git checkout <name>

# 切换分支(方法二):
git switch <name>

# 创建 + 切换分支(方法一):
git checkout -b <name>

# 创建 + 切换分支(方法二):
git switch -c <name>

# 从远程分支创建新的本地分支(创建前先git pull)
git checkout -b A origin/B

提示:从远程分支创建新的本地分支时,A 为本地分支 name ,B 为远程仓库的分支 name 。

  • 查看分支

git branch命令会列出所有分支,当前分支前面会标一个*号。

# 查看本地分支
git branch

# 查看本地分支 + 提交记录的哈希值 + 提交记录
git branch -v

# 查看本地分支 + 提交记录的哈希值 + 上游分支 + 提交记录
git branch -vv
  • 合并某分支到当前分支

通常,合并分支时,如果可能,Git 会用 Fast forward 模式,但这种模式下,删除分支后,会丢掉分支信息。

如果要强制禁用 Fast forward 模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

# Fast forward 模式,删除分支后,会丢掉分支信息。
git merge <name>

# 普通模式合并,不会丢掉分支信息。
git merge --no-off "commit_info" <name>
  • 删除分支
# 一般删除
git branch -d <name>

# 强制删除
git branch -D <name>

八、储藏

储藏可以获取你工作目录的中间状态,也就是你修改过的被追踪的文件和暂存的变更,并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

git stash

需要说明一点,stash 是本地的,不会通过 git push 命令上传到git server 上。

查看现有的所有储藏,此命令显然暗示了git stash可以多次保存工作进度,并用在恢复时候选择。

# 查看储藏
git stash list

# 重新应用已经实施的储藏(不删除储藏)
# 如果不指明,Git 默认使用最近的储藏并尝试应用它
git stash apply
git stash apply stash@{2}git stash apply [--index] [<stash>]

# 重新应用已经实施的储藏(删除储藏)
# 选项--index除了恢复工作区的文件外,还尝试恢复暂存区。
git stash pop [--index] [<stash>]

# 删除一个存储的进度。(默认删除最新的进度)
git stash drop [<stash>]

# 清空当前所有的stash
git stash clear

# 基于储藏进度创建分支。
git stash branch <branchname> <stash>

九、添加/推送远程仓库

# 关联一个远程库
git remote add origin <address>

# 第一次将本地库的所有内容推送到远程库上
git push -u origin master [-f]

# 此后,每次本地提交后,就可以使用命令推送最新修改
git push origin master

# 从本地推送分支
# 如果推送失败,先抓取远程的新提交:
git pull

# 或者
git pull --rebase
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值