git命令总结—VS Code上使用

基本命令

  • git checkout branch-name: 将当前分支切换到目标分支。
  • git stash: 将当前工作目录和暂存区的修改保存到一个堆栈上,并恢复干净的工作目录。
  • git stash pop:将最近一次的stash应用到当前分支,并从stash堆栈中移除。
  • git stash list: 查看所有的stash
  • git stash apply stash@{n}: 应用特定的stash条目,其中n是stash条目的索引。
  • git branch -r --contains commit-hash:会列出包含该提交的所有远程分支。

实践

切换分支

  • 查找到分支名字后直接切换
#查看本地所有分支
git branch
#返回:q

#查看当前分支和状态
git status

#将远程分支更新到本地
git fetch

#列出所有远程分支
git branch -r

#切换到一个分支
git checkout <branch_name>
  • 若更改还未完成,但需要切换到另一个分支
#stash暂存
git stash
#也可以在stash条目加一个描述,以便以后更容易识别
git stash save "描述"

#切换分支(同上)

#切换完后,恢复之前贮藏的更改
git stash pop
  • 若执行完git stash后,还有修改的文件没有暂存起来
#先恢复之前的stash
git stash pop

#暂存包括未跟踪的文件
git stash -u
#也可加描述
git stash save -u "描述"


# 或者,暂存包括未跟踪和被忽略的文件
git stash -a
#可加描述
git stash save -a "描述"

# 切换到目标分支(同上)

# 恢复暂存的修改(在需要的时候)
git stash pop

分析: 在执行 git stash 后,如果还有一个修改的文件没有被暂存起来,有以下几种原因:

  1. 未被Git跟踪的文件:默认情况下,git stash 只会暂存已经被Git跟踪的文件的修改。未跟踪的文件(即新创建但还没有使用 git add 添加到暂存区的文件)不会被暂存。

  2. 特定文件被忽略:如果某个文件被 .gitignore 忽略了,git stash 也不会暂存该文件的修改。

  3. 部分文件暂存:如果你对文件的某部分进行了暂存,而对其余部分没有暂存,git stash 默认会暂存所有已暂存和未暂存的更改,但不会包括未跟踪的文件。

提交到远程分支

  • 若远程仓库上有更新分支列表
#拉取远程分支信息
git fetch 

#先暂存更改
#再提交更改(提交到的本地仓库)

#将远程分支上的最新更改与本地分支合并(避免推送时产生冲突)
git pull 

#将更改推送到远程仓库
git push

git fetch: 获取远程更新,但不合并到当前分支。(fork上可以直接点击fetch )
git pull:获取远程更新并立即合并到当前分支。(fork上可以直接点击pull)

当需要将更改后推送的分支发出合并请求

  • 若合并的目标分支在本地是最新状态,则直接push后发出合并请求
  • 若合并的目标分支在本地不是最新状态(目标分支有更新,本地落后),则需要merge或者rebase

当需要将特定的提交从一个分支应用到另一个分支

  • 使用cherry-pick来实现: 假设在feature分支中有一个提交, 想将其应用到main分支
#切换到feature分支
git checkout feature

#查找feature分支的提交哈希值
git log

#假设日志如下
commit 000001111122222333	#commit行内容为哈希值,复制下来
Merge: 88888999999 aaaaabbbbbb
Author: user@example.com
Date:   Tue Aug 31 21:19:41 2021 +0000

#切换到目标分支(即main分支)
git checkout main

#Cherry-pick提交
git cherry-pick 000001111122222333

#若cherry-pick过程中出现冲突,在vscode上编辑有冲突的文件,然后暂存解决完冲突后的文件

#暂存完后,继续cherry-pick
git cherry-pick --continue

#若中途想终止cherry-pick操作
git cherry-pick --abort

从已有分支上拉取一个新分支

  • 假设需要从main分支上拉去一个新的分支,名为dev
#切换到已有分支(main分支)
git checkout main
#拉取最新版本
git pull

#从当前分支拉取新分支dev,并切换到新分支
git checkout -b dev

#将本地新建的dev分支push到远端
git push origin dev

#拉取远端分支
git pull
#拉取后会提示没有关联

#将本地分支与远程分支关联
git branch --set-upstream-to=origin/dev

根据commit号查找分支

  • 查找本地的分支
git branch --contains <commit_hash>
  • 查找远程的分支(Git默认按时间顺序列出分支)
git branch -r --contains <commit_hash>
  • 查看特定提交及其相关的提交历史
git log <commit_hash>

在特定的提交上打一个标签(tag),并推送

git tag -a <tag-name> <commit-hash> -m "描述"
#例如git tag -a v1.0.0 aabababb -m "Version 1.0.0 release"

#推送到远程分支
git push origin <tag-name>

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值