git 一些常用命令

107 阅读3分钟

image.png

git配置

配置git账户

git config --global user.name "wangxiao" #配置用户名
git config --global user.email "1234567@qq.com" #配置邮箱

查看git配置

git config --global --list

删除分支

删除远程分支

git push origin --delete 分支名称

删除本地分支

git branch -d youhuapic
git branch -D youhuapic (-D强制删除)

git stash

用来暂存当前正在进行的工作。

应用场景:

  • 想pull最新代码,又不想commit当前修改的文件
  • 想切换到别的分支修复一个紧急bug,又不想commit当前修改的文件
git stash #暂存
git stash pop #将暂存的内容弹出并应用

git cherry-pick commit_id

git cherry-pick 9dc23b34a69679c0301d3b14b5918cfc088e6684

回退

回退到指定版本操作流程

1. 查看所有的历史版本,获取你git的某个历史版本的id

 git log
  1. 回退本地代码库:
 git reset --hard commitID
  1. 强制推送到远程服务器:
  git push --force origin 分支
  1. 重新拉代码:
  git pull

git reset

在使用Git的过程中,由于操作不当,作为初学者的我们可能经常要去解决冲突。某些时候,当你不小心改错了内容,或者错误地提交了某些commit,我们就需要进行版本的回退。版本回退最常用的命令包括git reset和git revert。这两个命令允许我们在版本的历史之间穿梭。

下面就几种比较经典的场景进行总结:

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命git checkout -- filename;
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作;
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,使用git reset --hard commit_id,不过前提是没有推送到远程库。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本;要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

Git revert

Git revert用来撤销某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

Git revert和git reset都可以进行版本的回退,将工作区回退到历史的某个状态,二者有如下的区别:

  • git revert是用一次新的commit来回滚之前的commit,而git reset是直接删除指定的commit(并没有真正的删除,通过git reflog可以找回),这是二者最显著的区别;
  • git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容;
  • 在回滚这一操作上,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit"中和"之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现;但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。