setLESSCHARSET=utf-8 --命令行显示中文(等号两边不能有空格)git gc --清理不必要的文件并优化本地存储库
在执行git push -f 时报错 error: remote unpack failed: error Missing blob
因本地文件损坏导致,执行git gc 清理文件后执行git push -f 就成功了
--push的同时,与远程仓库的分支相关联
git push --set-upstream origin dev_lt_30038
--撤销push操作(非自己分支慎用)
git log --查看日志,并记录需要撤销到的目标commit版本号
git reset --hard commitId --撤销至目标commit版本
--结果:HEAD is now at ......git push --force --慎用,强制push,会造成内容丢失
--撤销pull操作
git reflog --查看撤销位置,包括合并之前的commit
git reset --hardid --撤销(本地源码也会被冲掉)
--撤销commit
git reset --soft HEAD~1 --撤销最新的一次commit
--------------------------------------------------------------------------------------------------
git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;
--------------------------------------------------------------------------------------------------
git reset HEAD@{64}:e22cf5ff
--修改commit注释
git commit --amend (修改最后一次注释)
i -- 进入编辑模式,修改好后,esc退出编辑模式,:wq保存退出
(修改某一次的注释)
git rebase -i HEAD~2 --会显示倒数两次的注释,在想要修改的那次注释前将 pick 换成edit
(i -- 进入编辑模式,将pick换成edit,esc退出,:wq保存退出)
git commit --amendgit rebase --continue
(修改多条注释信息时,同理git ,将要修改的注释均改pick - edit, 依次修改)
--合并commit
git log 查看合并的提交数
git rebase -i HEAD~n --合并前n条commit -- -i-interactivelet the user edit the list of commits to rebase(交互式允许用户编辑要重设基础的提交列表)
pick 执行该commit
squash 被合并到前一个commit,并将注释保留
fixup 放弃注释,并合并到前一个commit ----(不能在第一条commit中使用,会报错。出现问题git rebase abort 取消即可)
drop 删除该条commit
--小乌龟操作:stash当前分支后,show log,选择需要合并的commit,右键选择 Combine to one commit。方便快捷清晰!!
git rebase --abort --撤销合并操作
git rebase --skip --丢弃掉引起冲突的本地commit
git stash
git stash list 查看stash存储列表
git stash pop stash@{$num} 恢复stash堆栈中的指定工作目录,并删除该stash,默认第一个,即git stash pop stash@{$num}git stash apply stash@{$num} 恢复stash堆栈中的指定工作目录,但不会删除该stash,默认第一个,即git stash apply stash@{$num}git stash clear 删除所有stash列表
git stash drop 从列表中删除指定stash git stash drop stash@{$num}git stash show 显示做的改动 默认第一个 即git stash show stash@{1}git stash show -p: 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num}-p ,比如第二个:git stash show stash@{1}-p
--当提示没有可stash的内容时,说明无需再进行stash pop。如果stash pop发生冲突,可使用git reset --hard恢复。
--git stash drop 误删
--找到误删的id
--git stash apply id 即可
gitadd 只是把文件加到git 版本控制里,并不等于就被stash起来了,git add和git stash 没有必然的关系,但是执行git stash 能正确存储的前提是文件必须在git 版本控制中才行
===================================================================================git reset/revert
--当需要彻底回退到某个commit,并且该commit之后的所有commit都不要时可以用git reset --hard commitId
--当只是需要回退某一个commit,该commit之后的提交都需要保留时,可以用git revert -nid
reset是彻底回退到指定的commit版本,该commit后的所有commit都将被清除,包括提交历史记录;
revert仅仅是撤销指定commit的修改,并不影响后续的commit,但所撤销的commit被后续的commit修改了同一地方则会产生冲突;
reset执行后不会产生记录,revert执行后会产生记录;
reset执行后无法再次恢复,revert执行后因为不会清除记录,并且会产生新纪录,所以文件不会丢失,你可以多次执行revert恢复到某次改变之前的状态;
reset执行后HEAD会后移,而revert的HEAD则一直是向前的;
===================================================================================
提示:There is no tracking information for the current branch.
--新建本地分支,进行相关操作时会提示
--提示当前分支没有跟踪信息,本地分支和远程分支没有建立联系
--使用git branch -vv 可以查看本地分支和远程分支的关联关系
--解决:git branch --set-upstream-to=origin/远程分支的名字 本地分支的名字
--例: git branch --set-upstream-to=origin/master master
--本地分支不push到远程时,无法进行git push操作,因为服务器端没有该分支,无法进行比对。
--此时本地分支可以只与自己的远程分支进行操作(rebase, merge等),由该分支进行统一push,这样可以避免自己的多个分支在远端造成杂乱
git本地分支的提交(同远端多分支提交)
1、git checkout dev --切到远程分支
2、git pull --拉取远程分支最新代码
3、git checkout dev_lt --切换到自己分支(本地分支)
4、git rebase dev --将当前分支的新提交插入到dev分支的最顶点
--有冲突解决冲突,非代码文件冲突无法解决,从远程分支拉取最新代码后,将非代码文件复制过来,重新提交一次
5、git checkout dev --切到远程分支
6、git merge dev_lt --将指定分支(dev_lt)合并到当前分支
7、git push --提交到远程
git分支
git branch --查看本地分支
git branch -r --查看远程分支
git checkout -b dev_lt --创建新分支dev_lt并切换
git push origin -d dev_lt --删除远程分支
git branch -d dev_lt --删除本地分支
git branch -a --查看所有分支,包括本地和远程
--------------------删除远程分支后,本地依然存在时-------------------------------
git branch -a --查看所有分支
git remote show origin --查看本地分支和远程分支的关系
git remote prune origin --根据提示,删除远程不存在的分支
git pull报错
The following untracked working tree files would be overwritten by merge
Your local changes to the following files would be overwritten by merge
(不知道哪里出了问题,就是出来一堆乱七八糟的文件。此时可以强制拉取)
git fetch --all
git reset --hard origin/dev
git pull
--即可拉取到最新代码-------git pull/fetch 区别----------------
git pull 是上下文环境敏感的,它会把所有的提交自动给你合并到当前分支当中,没有复查的过程
git fetch 只是把拉去的提交存储到本地仓库中,真正合并到主分支中需要使用merage
git pull = git fetch + git merge 所以git pull 会产生冲突
------------------------------------------
git pull的时候发生冲突的解决方法
报错提示内容:
error: Your local changes to the following files would be overwritten by merge”
方法一、stash
1 git stash
2 git commit
3 git stash pop
方法二、放弃本地修改,直接覆盖
1 git reset --hard 2 git pull
(未实践,待测试)
--设置用户名和邮箱
git config --global user.name "luoting"
git config --global user.email 604404828@qq.com--查看用户名和邮箱
git config user.name
git config user.email
--查看配置信息
git config --list
---------报错合集-------------------
Unlink of file 'res_game/config/googleHummer/config.properties' failed. Should I try again?
--当前文件正在使用,包括但不限于 Android studio!!!![503] File currently being uploaded by another user
--有其他用户在对该分支进行操作,例如merge等。。。git merge --abort 可取消merge,当前pull有冲突时,也可使用该命令取消pull
cannot spawn .git/hooks/post-checkout: No such file or directory
--workspace\.git\hooks文件夹下post-checkout,post-commit,post-merge,pre-push全都删掉.