git常用操作汇总

162 阅读6分钟

一、git stash 相关操作

  1. git stash 用于缓存更改的操作,可以在不提交更改的情况下更换分支
  2. git stash pop 将缓存中最新的一天缓存拿来,更新到当前分支
  3. git stash list 查看stash缓存清单
  4. git stash apply stash@{id} 当存在多个stash缓存时,用来恢复指定ID的缓存,可以通过list查看ID
  5. git stash clear 清空所有stash缓存
  6. git stash drop stash@{id} 清除指定id的stash缓存

二、创造、删除本地分支和远程分支操作

  1. git branch -a 查看分支
  2. git branch dev 创建新的分支
  3. git checkout dev 切换到某分支
  4. git branch -D dev 删除本地分支
  5. git push origin --delete dev 删除远程分支

三、修改分支名称

  1. git branch -a 查看所有分支
  2. git branch -r 查看远程分支
  3. git branch -vv 查看本地分支所关联的远程分支
  4. git branch -m old_branch new_branch 分支重命名
  5. git push origin :old_branch 删除本地旧名字
  6. git push --set-upstream origin new_branch 将新名字推送到远程分支上

四、拉取最新内容到master分支上

  1. git pull origin master暴力法,直接将master上最新内容拉取并merge到本地master分支上
  2. git fetch origin master + git merge origin/master 这里fetch只是拉取下来,并不merge,这种方式比较安全,建议这种方式,不要无脑pull

五、CRLF和LF

  1. git config --global core.autocrlf true Git可以在你push时自动地把行结束符CRLF转换成LF,而在pull代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF

  2. git config --global core.autocrlf input Linux或Mac系统使用LF作为行结束符;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在push时把CRLF转换成LF,pull时不转换

  3. git config --global core.autocrlf false 在本地和代码库中都保留CRLF,无论pull还是push都不变,代码库什么样,本地还是什么样子

六、普通提交和继续使用上一次commit提交(使用--amend时修改commit注释信息只需要更改弹出文件的第一句就行,那句就是注释信息)

  1. git add .
  2. git commit -m '提交描述' (普通提交) git commit --amend (Signed-off-by: yourname <*****@qq.com> 在弹出的文件中添加这个,这个相当于签名,然后esc :wq退出)
  3. git push (普通推送) git push --force-with-lease (简写是git push -f)强制推送到远程分支上,这个操作注意只能在自己的分支上使用,这样才可控,毕竟是强制推送

七、将master分支最新内容拉取到本地其他分支上,应用场景是需要依赖master最新更新的内容,比如需要使用到master分支上新增的icon组件之类的

  1. git checkout master 切换到master分支上
  2. git pull 拉取远程master分支最新内容并合并到本地master上,建议使用fetch
  3. git checkout dev 切换到分支
  4. git merge master 向master合并,此时会有一些冲突文件
  5. git add . 解决冲突之后提交
  6. git commit 提交更改
  7. git push --force-with-lease (简写是git push -f)强制推送到远程分支上,这个操作注意只能在自己的分支上使用,这样才可控,毕竟是强制推送

八、将本地分支合入master前的操作

  1. git checkout master 切换到master分支上
  2. git pull 拉取远程master分支最新内容并合并到本地master上,建议使用fetch
  3. git checkout dev 切换到分支
  4. git rebase master 将本地分支和master最新内容压缩,此时会有冲突
  5. git add . 解决冲突之后提交
  6. git rebase --continue 继续压缩
  7. git push --force-with-lease(简写是git push -f)强制推送到远程分支上,这个操作注意只能在自己的分支上使用,这样才可控,毕竟是强制推送

九、使用rebase压缩commit提交

  1. git log 查看提交历史
  2. git rebase -i HEAD~4 最后那个数字代表最后几次提交,如果想将所有commit压缩成一次,则这个数字就是所有提交次数,可通过git log查看所有提交
  3. 执行上一条语句后会弹出一个文件,除了第一个pick不要改,其余pick全部改成squash,表示将所有commit向文件中第一行的commit压缩,修改完后esc :wq退出
  4. 如果有冲突,解决冲突
  5. git add .
  6. git rebase --continue 继续压缩,如果想放弃这次压缩,运行git rebase --abort
  7. 如果所有冲突都已经解决后,把Please enter之前的内容都删除,然后重新写一句,这句就是commit注释信息,然后esc :wq退出
  8. git log 查看,发现已经压缩了
  9. git push --force-with-lease(简写是git push -f)将压缩后的commit强制推送到远程分支上,这个操作注意只能在自己的分支上使用,这样才可控,毕竟是强制推送

十、删除本地分支和远程分支

  1. git checkout master 切换到master分支,或者非删除分支的其他分支
  2. git branch -a 查看已有的本地分支和远程分支
  3. git push origin --delete dev 删除远程dev分支
  4. git branch -D dev 删除本地dev分支
  5. git branch -a 删除后,再次查看分支情况

十一、撤销git commit

git reset --soft HEAD^ 撤回commit操作,之前的代码仍然保留

--mixed 

意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作

这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

--soft  

不删除工作空间改动代码,撤销commit,不撤销git add .  

--hard

删除工作空间改动代码,撤销commit,撤销git add .

注意完成这个操作后,就恢复到了上一次的commit状态。

十二、修改分支名称

  1. git branch -m oldName newName 本地分支重命名
  2. git push --delete origin oldName 删除远程旧分支
  3. git push origin newName 上传新命名的本地分支
  4. git branch --set-upstream-to origin/newName 把修改后的本地分支与远程分支关联

十三、git 删除stash 的内容

  1. git stash list 查看stash 列表
  2. git stash clear 清空所有stash
  3. git stash drop stash@{0} 这是删除第一个队列