git常用命令

add
commit
push
fetch/clone
checkout
工作区
暂存区
本地仓库
远程仓库
  1. 新建或删除分支
# 查看本地分支
git branch
# 创建分支
git branch test
# 切换分支
git checkout test
# 新建并切换到一个分支
git checkout -b test
# 强制取代本地分支
git fetch --all && git reset --hard origin/master && git pull


# 删除分支
git branch -d test
# 删除远程分支
git push origin --delete testgit
  1. 撤销文件修改
# 撤销工作区修改,回到最近一次add或commit的状态
git checkout -- 文件名
git checkout . # 撤销所有文件修改

# 撤销暂存区修改(如果当前分支一次commit都没有)
git rm --cached 文件名 # ,用这个
# 撤销暂存区修改(如果当前分支已经有commit记录了)
git reset HEAD 文件名 # 先用这个让暂存区的内容回到与上次commit的内容一样,工作区不变
git chekcout -- file # 再用这个撤销工作区的修改
  1. 删除文件
git rm -r -f - 文件名
# 列出要删除的文件,一般是新增的文件
git clean -fd -n
# 删除刚刚列出的文件和目录
git clean -fd
  1. 提交代码时解决冲突
git fetch master
git rebase master
# 上面两个可以合为git pull --rebase master
解决冲突ing
git add .
git rebase --continue
git push

git rebase master mywork = git checkout mywork + git rebase master

因为mywork是我们基于以前的master在修改,在我们修改的过程中,origin也在修改。这个命令就是把mywork里面的改动,重新添加到现在的master里面 ,即得到了 新master+ (mywork - 旧master),这样我们就完成了变基,把我们修改的基础从旧origin变成了新orgin

我们说的mywork内容是以最近一次commit记录为准,rebase一般在commit之后使用

输入这个命令后可能会用冲突,需要我们手动解决冲突,解决冲突后git add . ,然后git rebase --continue,然后push,不需要commit

  1. pull

git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase

  1. fetch
git fetch --all
  1. commit
git commit -m "message"
# add之后,直接把这次的提交合并到上一次,没有新的提交记录
git commit --amend
  1. push
git push                             // 保存到远程数据库该分支
git push origin test                 // 保存到远程的test分支
git push origin test:awesomebranch   // 远程和本地分支名字不一样
  1. reset

HEAD指向当前branch最顶端的一个commit,也就是该分支最近一次commit后的节点

命令修改内容状态工作区变化暂存区变化HEAD变化
git reset soft修改内容还在,变成已add的状态没变没变变了
git reset mixed
或git rest
修改内容还在,变成未add的状态没变变了变了
git hard修改内容丢失变了变了变了

这些命令后面可以跟HEAD或[commitid],commitid可以通过git log查看

  1. rebase

rebase可以合并当前分支的多个commit

# 表示要修改后两次的提交
git rebase -i HEAD~2
# 然后会显示下面的内容:
pick 8b485bb add 4
pick a75ed74 add 5

# Rebase 63ce9fb..a75ed74 onto 63ce9fb (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
~
~
~
# 然后把第二个pick换成fixup然后保存退出就可以了,这是把第二个提交信息也删,如果不想删就是把pick替换为squash,然后重新修改合并之后的提交信息(默认是合并),然后保存推出

# 如果是想要修改commit信息,就把对应的pick提交改成r
r 8b485bb add 4
pick a75ed74 add 5
# 然后保存退出,就会进入修改界面,修改之后再保存退出

rebase可以解决分叉合并,具体用法就是上面说的提交时解决冲突,要注意只对尚未推送或未分享给别人的本地修改执行变基操作清理历史, 从不对已推送至别处的提交执行变基操作

idea同时打开两个分支的目录

  1. git worktree 目录 分支名
    例如 git worktree add …/test test

  2. 清除worktree
    例如 git worktree remove test

stash用法
(1)git stash save “save message” : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

(2)git stash list :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p ,比如第二个:git stash show stash@{1} -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1}

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{KaTeX parse error: Expected 'EOF', got '}' at position 4: num}̲ :丢弃stash@{num}存储,从列表中删除这个存储

(8)git stash clear :删除所有缓存的stash

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值