3

下面的内容都是我在平时工作中使用频率较高的场景以及对应的代码,分享和记录一下

基本操作

git init  // 初始化git目录
git clone // 下载代码到本地 
git add [file1] [file2] ... // 添加指定文件到暂存区
git commit [file1] [file2] ... // 提交暂存区的指定文件到仓库区
git pull // 从远程仓库拉取代码到本地
git push // 推送本地仓库到远程

创建分支并提交分支

git branch dev  //创建本地分支  
git checkout dev //切换本地分支  
git push origin dev //提交分支到远端  

删除分支

git branch -d dev //删除本地分支  
git push origin --delete dev //删除远程分支  

合并分支

git merge xxx //合并xxx到当前分支  

代码写错分支

这个场景用到的挺多的,比如发现了一个Bug,立马动手去改,却发现写到了master或其他分支上,这时候就需要把我们刚写的所有代码搞到对应的bug分支上去:
git add .      //把所有改动暂存  
git stash     //把暂存的文件提交到git的暂存栈  
git checkout //本该提交代码的分支   
git stash apply/pop //将暂存栈中的代码放出来  

查看add但没有commit的内容

git status

查看commit但没有push的内容

git diff origin/master

合并多次commit信息(git rebase)

使用场景:可能我们写完了一些功能之后,git commit 到了本地仓库,之后发现有些地方需要修改或者补充一下,这时候就有了第二次提交,同时有可能出现第三次、第四次提交,这时候git log查看提交日志就会有无用的提交内容,看上去很不美观,这时候我们可以用git rebase来将多次提交合并为一个。
  1. git log 查看多次提交的信息

// -i 交互式界面进行rebase

  1. git rebase -i 8afbeec // 8afbeec是需要合并的分支的前一个分支的point

或者
git rebase -i HEAD~3 // 从HEAD开始,需要合并的分支数

  1. 之后会出现待合并的提交信息和如下提示:
pick:保留该commit(缩写:p)

reword:保留该commit,但我需要修改该commit的注释(缩写:r)

edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)

squash:将该commit和前一个commit合并(缩写:s)

fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)

exec:执行shell命令(缩写:x)

drop:我要丢弃该commit(缩写:d)
  1. 将提交信息修改为
pick d2cf1f9 修改后的信息111

squash 47971f6 修改后的信息222

squash fb28c8d 修改后的信息333
  1. wq保存修改
  2. 合并修改commit message
  3. wq

这时候我们之前提交的多次commit就会合并为一个


修改刚刚commit提交的message

使用场景:提交之后,想要修改commit的message

git commit --amend

git回滚分支

使用场景: 。。。

  • 第一种方式(比较暴力)
git log 查看提交历史 
git reset --hard dbf8d691 // 回到指定的提交点
git push -f 
  • 第二种方式
 git revert -n 931b8a14c97988 // 需要撤销的提交点
 git commit -m 'revert' // 提交新的分支
 git push // 将revert后的分支push

git撤销回滚

git reflog 查看提交历史(包含已回滚的提交) git reset --hard dbf8d691 // 回到指定的提交点 

查看指定分支是基于那个分支创建的

使用下边的命令,可以知道某个分支是基于那个分支checkout的,以防止merge的时候,把不需要的内容合并到测试或者正式环境。

git reflog --date=local | grep <branchname>

恢复 git reset 的误操作

使用场景:在执行git reset --hard 之后,git log就会丢失我们reset分支之后的内容,想要撤回reset内容看下边:

git reflog // 查看log(包含已经reset的log)

此时会显示出已经reset的分支之后的内容,之后执行git reset --hard 想要到达的分支就好了

修改密码后clone代码提示权限校验失败

报错内容:

fatal: Authentication failed for 'http://xxxx.git'

解决方案:使用命令

git config --system --unset credential.helper

此命令用来清除密码记录,之后重新执行git clone后输入新密码即可。

未完待续...


瓦力
575 声望15 粉丝

一只coder