Git 常用命令

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。


基本概念

pidH7M8.md.png

  • 工作目录:存放我们正在写的代码(当我们新版本开发完成之后,就可以将新版本添加到暂存区)
  • 暂存区:暂时保存待提交的内容(新版本提交后会存放到本地仓库)
  • 本地仓库:位于本地电脑上的一个版本控制仓库(存放的就是当前项目各个版本代码的增删信息)
  • 远程仓库:位于远程服务器上的版本控制仓库(服务器上的版本信息可以由本地仓库推送上去,也可以从服务器拉取到本地仓库)

基本命令

创建本地仓库

初始化当前目录,将其作为 Git 仓库:

git init

查看当前本地仓库的状态:

git status

添加和提交

将未纳入版本控制的文件添加到暂存区:

git add hello.txt
# 添加所有文件
git add *

将纳入版本控制的文件移出暂存区:

git rm --cached hello2.txt

提交暂存区到本地仓库(message指提交时的说明信息):

git commit -m [message]
# 提交暂存区的指定文件到本地仓库
$ git commit [file1] [file2] ... -m [message]
# 设置文件不需要添加到暂存区,可以直接提交
git commit -a #-m [message]
# 查看提交记录
git log
git log --graph

当纳入版本控制的文件发生更改时,需要重新提交新版本到本地仓库中。

同时对于不想纳入版本控制的文件,可以创建一个.gitignore文件来确定一个文件忽略列表,如果忽略列表中的文件存在且不是被追踪状态,那么git不会对其进行任何检查:

# 这样就会匹配所有以txt结尾的文件
*.txt
# 虽然上面排除了所有txt结尾的文件,但是这个不排除
!666.txt
# 也可以直接指定一个文件夹,文件夹下的所有文件将全部忽略
test/
# 目录中所有以txt结尾的文件,但不包括子目录
xxx/*.txt
# 目录中所有以txt结尾的文件,包括子目录
xxx/**/*.txt

回滚

当想要回退到过去的版本时,就可以执行回滚操作,执行后,可以将工作目录的内容恢复到指定提交的状态:

git reset --hard commitID

如果想要再次回到回退前的状态,可以通过查看所有分支的所有操作记录:

git reflog

相关博客

分支

一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。Git 分支实际上是指向更改快照的指针。

创建分支

# 查看当前仓库中存在的分支
git branch
# 创建分支
git branch (branchname)
# 删除分支
git branch -d (branchname)
# 切换分支
git checkout (branchname)
# 查看分支状态
git log --all --graph

合并分支

git merge test
# 如果合并分支的过程中出现冲突(修改了同一文件),可以查看哪里发生了冲突
git diff
# 将某个分支的版本回退到修改之前可以解决冲突,然后执行合并操作

变基分支

# 变基操作跟合并不同,合并是分支回到主干的过程,而变基是直接修改分支开始的位置
# 比如我们希望将yyds变基到master上,那么yyds会将分支起点移动到master最后一次提交位置:
git rebase master
# 变基后,yyds分支相当于同步了此前master分支的全部提交。

优选

# 我们还可以选择其将他分支上的提交作用于当前分支上,这种操作称为cherrypick
# 单独合并一个提交
git cherry-pick <commit id>
# 这里我们在master分支上创建一个新的文件,提交此次更新,接着通过cherry-pick的方式将此次更新作用于test分支上。

远程仓库

远程仓库实际上就是位于服务器上的仓库,它能在远端保存我们的版本历史,并且可以实现多人同时合作编写项目,每个人都能够同步他人的版本,能够看到他人的版本提交,相当于将我们的代码放在服务器上进行托管。

远程推送

git remote add 名称 远程仓库地址
# 如果本地分支名称和远端分支名称一致,那么不用指定远端分支名称
# 但是如果希望推送的分支在远端没有同名的,那么需要额外指定。
git push 远程仓库名称 本地分支名称[:远端分支名称]

# 查询远程仓库路径
git remote -v
# 删除指定远程仓库
git remote rm 名称


克隆项目

git clone 时,可以所用不同的协议,包括 ssh, git, https 等,其中最常用的是 ssh,因为速度较快,还可以配置公钥免输入密码:

# SSH协议
git clone git@github.com:fsliurujie/test.git 
# GIT协议
git clone git://github.com/fsliurujie/test.git  
# HTTPS协议
git clone https://github.com/fsliurujie/test.git

抓取和拉取

# 抓取:只获取但不合并远端分支,后面需要手动合并才能提交
git fetch 远程仓库 
#拉取:获取+合并
git pull 远程仓库

Git标签

发布一个版本时,我们通常先在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

Git 使用的标签有两种类型:轻量级的(lightweight)带注解的(annotated)。建议使用带注解的标签,以便保留相关信息。

git tag -a v1.0 
# 查看已有标签
git tag
# 查看对应版本修改的内容
git show v1.0
# 删除标签
git tag -d v1.0

Git 命令速查表

piwipqA.md.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值