一、git stash 相关操作
- git stash 用于缓存更改的操作,可以在不提交更改的情况下更换分支
- git stash pop 将缓存中最新的一天缓存拿来,更新到当前分支
- git stash list 查看stash缓存清单
- git stash apply stash@{id} 当存在多个stash缓存时,用来恢复指定ID的缓存,可以通过list查看ID
- git stash clear 清空所有stash缓存
- git stash drop stash@{id} 清除指定id的stash缓存
二、创造、删除本地分支和远程分支操作
- git branch -a 查看分支
- git branch dev 创建新的分支
- git checkout dev 切换到某分支
- git branch -D dev 删除本地分支
- git push origin --delete dev 删除远程分支
三、修改分支名称
- git branch -a 查看所有分支
- git branch -r 查看远程分支
- git branch -vv 查看本地分支所关联的远程分支
- git branch -m old_branch new_branch 分支重命名
- git push origin :old_branch 删除本地旧名字
- git push --set-upstream origin new_branch 将新名字推送到远程分支上
四、拉取最新内容到master分支上
- git pull origin master暴力法,直接将master上最新内容拉取并merge到本地master分支上
- git fetch origin master + git merge origin/master 这里fetch只是拉取下来,并不merge,这种方式比较安全,建议这种方式,不要无脑pull
五、CRLF和LF
-
git config --global core.autocrlf true Git可以在你push时自动地把行结束符CRLF转换成LF,而在pull代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF
-
git config --global core.autocrlf input Linux或Mac系统使用LF作为行结束符;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在push时把CRLF转换成LF,pull时不转换
-
git config --global core.autocrlf false 在本地和代码库中都保留CRLF,无论pull还是push都不变,代码库什么样,本地还是什么样子
六、普通提交和继续使用上一次commit提交(使用--amend时修改commit注释信息只需要更改弹出文件的第一句就行,那句就是注释信息)
- git add .
- git commit -m '提交描述' (普通提交) git commit --amend (Signed-off-by: yourname <*****@qq.com> 在弹出的文件中添加这个,这个相当于签名,然后esc :wq退出)
- git push (普通推送) git push --force-with-lease (简写是git push -f)强制推送到远程分支上,这个操作注意只能在自己的分支上使用,这样才可控,毕竟是强制推送
七、将master分支最新内容拉取到本地其他分支上,应用场景是需要依赖master最新更新的内容,比如需要使用到master分支上新增的icon组件之类的
- git checkout master 切换到master分支上
- git pull 拉取远程master分支最新内容并合并到本地master上,建议使用fetch
- git checkout dev 切换到分支
- git merge master 向master合并,此时会有一些冲突文件
- git add . 解决冲突之后提交
- git commit 提交更改
- git push --force-with-lease (简写是git push -f)强制推送到远程分支上,这个操作注意只能在自己的分支上使用,这样才可控,毕竟是强制推送
八、将本地分支合入master前的操作
- git checkout master 切换到master分支上
- git pull 拉取远程master分支最新内容并合并到本地master上,建议使用fetch
- git checkout dev 切换到分支
- git rebase master 将本地分支和master最新内容压缩,此时会有冲突
- git add . 解决冲突之后提交
- git rebase --continue 继续压缩
- git push --force-with-lease(简写是git push -f)强制推送到远程分支上,这个操作注意只能在自己的分支上使用,这样才可控,毕竟是强制推送
九、使用rebase压缩commit提交
- git log 查看提交历史
- git rebase -i HEAD~4 最后那个数字代表最后几次提交,如果想将所有commit压缩成一次,则这个数字就是所有提交次数,可通过git log查看所有提交
- 执行上一条语句后会弹出一个文件,除了第一个pick不要改,其余pick全部改成squash,表示将所有commit向文件中第一行的commit压缩,修改完后esc :wq退出
- 如果有冲突,解决冲突
- git add .
- git rebase --continue 继续压缩,如果想放弃这次压缩,运行git rebase --abort
- 如果所有冲突都已经解决后,把Please enter之前的内容都删除,然后重新写一句,这句就是commit注释信息,然后esc :wq退出
- git log 查看,发现已经压缩了
- git push --force-with-lease(简写是git push -f)将压缩后的commit强制推送到远程分支上,这个操作注意只能在自己的分支上使用,这样才可控,毕竟是强制推送
十、删除本地分支和远程分支
- git checkout master 切换到master分支,或者非删除分支的其他分支
- git branch -a 查看已有的本地分支和远程分支
- git push origin --delete dev 删除远程dev分支
- git branch -D dev 删除本地dev分支
- 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状态。
十二、修改分支名称
- git branch -m oldName newName 本地分支重命名
- git push --delete origin oldName 删除远程旧分支
- git push origin newName 上传新命名的本地分支
- git branch --set-upstream-to origin/newName 把修改后的本地分支与远程分支关联
十三、git 删除stash 的内容
- git stash list 查看stash 列表
- git stash clear 清空所有stash
- git stash drop stash@{0} 这是删除第一个队列