git 实践操作记录

set LESSCHARSET=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 --hard id		--撤销(本地源码也会被冲掉)



--撤销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 --amend
git rebase --continue
(修改多条注释信息时,同理git ,将要修改的注释均改pick - edit, 依次修改)

--合并commit
git log 查看合并的提交数
git rebase -i HEAD~n 	 --合并前n条commit		-- -i  -interactive let 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 即可

git add 只是把文件加到git 版本控制里,并不等于就被stash起来了,git add和git stash 没有必然的关系,但是执行git stash 能正确存储的前提是文件必须在git 版本控制中才行


===================================================================================

git reset/revert

--当需要彻底回退到某个commit,并且该commit之后的所有commit都不要时可以用git reset --hard commitId
--当只是需要回退某一个commit,该commit之后的提交都需要保留时,可以用git revert -n id

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全都删掉.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值