【git】常用操作

基础操作

  • git init 初始化仓库

要使用 Git 进行版本管理,必须先初始化仓库, 执行了 git init命令的目录下就会生成 .git 目录。这个 .git 目录里存储着管理当前目录内容所需的仓库数据

  • git status 查看仓库状态

工作树和仓库在被操作的过程中,状态会不断发生变化。在 Git 操作过程中时常用 git status命令查看当前状态,

powershell 复制代码
git status
  • git add 向暂存区中添加文件

要想让新建的文件成为 Git 仓库的管理对象,就需要用 git add命令将其加入暂存区(Stage 或者 Index)中。暂存区是提交之前的一个临时区域。

powershell 复制代码
git add ./filename
  • git commit 保存仓库的历史记录

git commit命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录,我们就可以在工作树中复原文件。

powershell 复制代码
git commit -m '提交信息'

#修改提交信息
git commit --amend

#git add+commit 合并操作
git commit -am '提交信息'
  • git log 查看提交日志
powershell 复制代码
# 查看全部日志
git log 

#查看指定目录、文件日志
git log filename

#查看提交所带来的改动
git log -p 

#查看文件提交前后的差别
git log -p filename

#以图表形式查看分支
git log --graph
  • git diff 查看更改前后差别

git diff命令可以查看工作树、暂存区、最新提交之间的差别。

powershell 复制代码
# 执行 git diff命令,查看当前工作树与暂存区的差别
git diff

#查看工作树和最新提交的差别 HEAD是指向当前分支中最新一次提交的指针。
git diff HEAD

分支操作

  • git branch 查看分支
powershell 复制代码
# 显示分支列表并确定当前所在分支
git branch 

#-a参数可以同时显示本地仓库和远程仓库的分支信息
git branch -a

# 删除指定分支
git branch -d <branch_name>
  • git check 切换分支
powershell 复制代码
# 切换分支
git checkout <branch_name>

#切换回上一个分支
git checkout -

# 以当前所在分支为基础创建新的分支
git checkout -b <branch_name>

特性分支:特性分支顾名思义,是集中实现单一特性(主题),此之外不进行任何作业的分支。基于特定主题的作业在特性分支中进行,主题完成后再与 master 分支合并。只要保持这样一个开发流程,就能保证 master 分支可以随时供人查看。这样一来,其他开发者也可以放心大胆地从 master 分支创建新的特性分支。
主干分支:主干分支是刚才我们讲解的特性分支的原点,同时也是合并的终点。通常会用 master 分支作为主干分支。主干分支中并没有开发到一半的代码,可以随时供他人查看。主干分支总是配置在正式环境中

  • git merge 合并分支
powershell 复制代码
# 切换至主干分支
checkout master
#将特性分支代码合并至主干分支
git merge --no--ff <branch_name>

更改提交操作

  • git reset 回溯历史版本

要让仓库的 HEAD、暂存区、当前工作树回溯到指定状态,需要用到 git rest --hard命令。只要提供目标时间点的哈希值 ,就可以完全恢复至该时间点的状态

powershell 复制代码
git reset --hard fd0cbf0d4a25f747230694d95cac1be72d33441d

git log命令只能查看以当前状态为终点的历史日志。所以这里要使用 git reflog命令,查看当前仓库的操作日志。在日志中找出回溯历史之前的哈希值,通过 git reset --hard命令恢复到回溯历史前的状态。

powershell 复制代码
git reflog
4096d9e HEAD@{0}: commit: Fix B
fd0cbf0 HEAD@{1}: checkout: moving from master to fix-B
fd0cbf0 HEAD@{2}: reset: moving to fd0cbf0d4a25f747230694d95cac1be72d33441d
83b0b94 HEAD@{3}: merge feature-A: Merge made by the 'recursive' strategy.
fd0cbf0 HEAD@{4}: checkout: moving from feature-A to master
8a6c8b9 HEAD@{5}: checkout: moving from master to feature-A
fd0cbf0 HEAD@{6}: checkout: moving from feature-A to master
8a6c8b9 HEAD@{7}: commit: Add feature-A
fd0cbf0 HEAD@{8}: checkout: moving from master to feature-A
fd0cbf0 HEAD@{9}: commit: Add index
9f129ba HEAD@{10}: commit (initial): First commit

在日志中,我们可以看到 commit、checkout、reset、merge 等 Git 命令的执行记录。只要不进行 Git 的 GC(Garbage Collection,垃圾回收),就可以通过日志随意调取近期的历史状态,就像给时间机器指定一个时间点,在过去未来中自由穿梭一般。即便开发者错误执行了 Git 操作,基本也都可以利用 git reflog命令恢复到原先的状态

远程仓库

  • git remote add 添加远程仓库
powershell 复制代码
git remote add origin git@github.com:github-book/git-tutorial.git
  • git push 推送至远程仓库
powershell 复制代码
#将当前分支下的内容推送给远程仓库origin的master分支
git push origin master
  • git clone 获取远程仓库

执行 git clone命令后我们会默认处于 master 分支下,同时系统会自动将 origin 设置成该远程仓库的标识符。也就是说,当前本地仓库的 master 分支与 GitHub 端远程仓库(origin)的 master 分支在内容上是完全相同的

powershell 复制代码
git clone git@github.com:github-book/git-tutorial.git
  • 获取远程仓库feature-D分支
  • b 参数的后面是本地仓库中新建分支的名称。新建分支名称后面是获取来源的分支名称。以名为 origin 的仓库的 feature-D 分支为来源,在本地仓库中创建 feature-D 分支。
powershell 复制代码
git checkout -b feature-D origin/feature-D
  • git pull 获取最新的远程仓库分支
powershell 复制代码
 git pull origin master
相关推荐
雁于飞6 小时前
vscode中使用git、githup的基操
笔记·git·vscode·学习·elasticsearch·gitee·github
小毛驴85017 小时前
所有微服务部署都使用一个git地址,并且通过docker部署各个服务的情况下,如何编写mvn指令来处理各个服务。
git·docker·微服务
国王不在家17 小时前
git 切换仓库后清理分支缓存
git
柯南二号21 小时前
【Gitlab】Ubuntu 20.04服务器部署Gitlab
git·gitlab
phac12321 小时前
git 如何直接拉去远程仓库的内容且忽略本地与远端不一致的commit
大数据·git·elasticsearch
ficker131 天前
git常用命令
git
kevin_cat2 天前
微信群机器人-备份文件发送通知
git·bash·企业微信
程序媛Dev2 天前
50.4k Star!我用这个神器,在五分钟内搭建了一个私有 Git 服务器!
运维·服务器·git
澈轩2 天前
Git 用得好,下班走得早
git
人间造梦工厂2 天前
Git Bash 别名
git