【git】常用指令总结

这篇博客详细介绍了Git的使用流程,包括克隆、分支管理、提交、回滚、解决冲突等操作。特别强调了如何使用gitrebase修改历史提交,删除误提交的文件,以及在遇到拉取代码后的冲突时如何解决。此外,还提供了处理未暂存和已暂存修改的方法,以及 stash 的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流程

# 1. 克隆 
$ git clone .....
# 2. 进入文件夹 
$ cd xxx
# 3. 查看所有分支 
$ git branch -a 
# 4. 查看远程分支 
$ git branch -r 
# 5. 创建分支并追踪到远程分支 
$ git checkout -b xxxxx origin/xxxx
# 6. 从远程分支拉取 
$ git pull --rebase
# 7. 查看工作区与暂存区区别 
$ git status 
# 详细查看 
$ git diff --cached   git diff --staged
# 8. 将工作区修改添加到暂存区 
$ git add .
# 9. 提交暂存区所有修改 
$ git commit -a
# 10. vim 
$ i		// 进入编辑模式 
$ esc	// 退出到普通模式 
$ : 	// 进入命令模式
$ wq 	// 命令模式下 保存并退出
# 11. 修改上一次提交
$ git commit --amend 
$ shift+ZZ	// vim下直接保存并退出
# 12. 推送到远程版本库
$ git push origin HEAD:refs/for/sandbox/master

指令

# 将文件从工作区添加到暂存区 
$ git add .
# 将暂存区内容提交到版本库
$ git commit -m 'first commit' 
# 修补式提交
$ git commit --amend
# 将本地分支推送到远程分支
$ git push origin <local branch>:refs/for/<remote branch>

# 切换分支
$ git checkout branch
# 在other上创建新分支并切换过去
$ git checkout -b new_branch origin/other
# 撤销未暂存的修改
$ git checkout file_name
$ git checkout -- file_name	// file_name与branch名字冲突时
# 还原文件到07ed节点
$ git checkout 07ed <filename>

# 撤销已暂存的修改
$ git reset file_name
# 撤销已暂存的修改,并覆盖工作区
$ git reset --hard HEAD
# 回滚到xxx状态
$ git reset --hard xxxx
# 恢复到未回滚前的状态
$ git reset --hard ORIG_HEAD

# 比较工作区和暂存区
$ git status
# 同时比较暂存区和工作区、版本区
$ git status -s
# - 工作区修改,暂存区为空: 比较工作区和版本库共同文件
# - 工作区修改,暂存区不为空:比较工作区与暂存区共同文件
$ git diff
# 比较工作区与版本库
$ git diff HEAD
# 比较暂存区与版本库
$ git diff --staged   git diff --cached
# 比较两次提交 只显示文件名
$ git diff 2362accf3e7be23e30  47f88153de2dc2f48a1 --name-only
# 查看日志,只显示标题
$ git log --oneline
# 显示分支,图像
$ git log --oneline --all --decorate --graph 
# 查看某个文件的变更
$ git log <filename>

# 查看HEAD跳转历史
$ git reflog
# 在使用git reflog后,跳转到节点
$ git reset xxxx
# 在使用git reflog后,跳转到id所指状态
$ git reset --hard HEAD@{id}

# 从远程下载
$ git fetch
# 合并分支
$ git merge
# 应用其他提交(c0 c1 ...)到当前分支
$ git cherry-pick C0 C1...
# 将当前分支变基到branch1分支(HEAD指向branch1)
$ git rebase branch1
# 将branch1分支变基到branch2分支(HEAD指向branch2)
$ git rebase branch1 branch2
# 交互式衍合以整理未入库的提交,包括修改、拆分、压缩、改变顺序、删除等
$ git rebase -i HEAD~N
# 以合并方式同步远程库
$ git pull
# 以衍合方式同步远程库
$ git pull --rebase

# 创建分支
$ git branch xxx
# 追踪远程分支
$ git branch -u origin/xxx
# 删除xxx分支
$ git branch -d xxx
# 强制删除xxx分支
$ git branch -D xxx
# 将three分支变为指向c2节点,改变分支指向还可以使用以下:
$ git branch -f three c2
$ git rebase one master   // 其中master为one祖先节点,则将master移动到one处,并且HEAD指向master 先删除分支,再在指定节点创建分支
# 查看本地分支追踪
$ git branch -vv

# 查看存储了哪些
$ git stash list
# 默认查看第一个stash做的改动 查看第二用`git stash show stash@{1}`
$ git stash show
# 默认查看第一个stash做的改动,具体显示内容
$ git stash show -p
# or `git stash apply stash@{$num}`应用某个存储,但不会从存储列表删除
$ git stash apply
# or `git stash pop stash@{$num}`应用存储并删除
$ git stash pop
# 丢弃某个存储,列表中删除
$ git stash drop stash@{$num}
# 删除所有缓存的stash
$ git stash clear

具体问题

修改之前的提交
git rebase 使用总结:

使用git rebase 修改以前已经提交的内容

比如要修改之前的commit的 hashcode为:187f869c9d54c9297d6b0b1b4ff47d2ec781a55e

  1. 退回到要修改的commit的前一个点上,执行后,git会调用默认的vi编辑器显示commit到最新commit的所有记录,把我们要修改的那一项的首行的pick 改成edit。
$ git rebase 187f869c9d54c9297d6b0b1b4ff47d2ec781a55e^ --interactive
$ git rebase 187f869c9d54c9297d6b0b1b4ff47d2ec781a55e^ -i
  1. 修改完我们要修改的内容后,利用git add 添加
$ git add <filepattern>
  1. 修改这个commit
$ git commit --amend
  1. 提交修改后的commit 并且返回到原来的head 处
$ git rebase --continue
删除误提交的文件
$ git rm --cached <filename>
# rm 'filename'
$ git status
# Untracked files: ... filename ...
$ git commit --amend --allow-empty

$ git log --stat
遇到错误
First, rewinding head to replay your work on top of it...

# 解决方法
$ git fetch origin
$ git reset --hard origin/slp/ac/smb/develop-mtk-mesh-210621
拉取代码后解决冲突
$ git add/rm <conflicted_files>
$ git rebase --continue
# 再提交就好了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值