【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
相关推荐
@卞1 小时前
版本控制器 git(5)--- git 标签管理
git
灰飞肥鱼3 小时前
rebase 与 merge
git
梦道长生3 小时前
在单台电脑上管理多个 GitHub 账户并解决推送问题
git·github
Dreamboat-L5 小时前
Git基本命令的使用(超详细)
git
~央千澈~13 小时前
git执行git remote关联了仓库后的.git文件夹目录下到底是些什么东西?优雅草卓伊凡
git
南吕十七16 小时前
bash和git建立连接上传文件
git
花花无缺20 小时前
merge与rebase的区别
git
Alex老夫子1 天前
解决 husky > pre-commit hook failed (add --no-verify to bypass)
git·android studio
漂亮_大男孩1 天前
Git|GitHub SSH 连接配置与验证全流程(通用方法)
git·ssh·github
灵码未来_official1 天前
git操作指令
git