git fetch 和 pull 的区别

工作区(working directory)--> 暂存区(staging)--> 本地仓库(local repository)--> 远程仓库副本 --> 远程仓库(remote repository)

简而言之:git pull = git fetch + git merge

使用 rebase 合并多个 commit

背景:开发中会产生很多临时commit,尤其是在修改commiter的检视意见,以及修改clean code的时候。为了避免多个commit信息让提交显得杂乱,也方便后续的查看。在提交MR前,建议整理合并一下这些commit。不必强求把所有commit合成一个,只要把临时commit合并,保留有特性的commit即可。

操作步骤:
1、在自己的分支上,先执行git log,发现有三个临时提交,commit1、commit2、commit3。

2、把commit 3,commit 2,commit 1合并成一个commit:(下面两种方式都可以)
》git rebase -i HEAD~3 // 表示从最新commit开始往后数3个commit。
》git rebase -i e29c25e45aee0028aa // 表示从(e29c25e45aee0028aa)这个commit之后的所有commit。

3、然后进入到编辑页面,如下所示:
pick a18a451 commit 1
pick a18a452 commit 2
pick a18a453 commit 3

操作方法:把需要保留的commit改成pick(默认就是pick),把需要合并的commit 改成s或者f。编辑完成后保存退出。

4、重新编辑commit信息: 上一步完成之后,会自动进入编辑commit信息流程,按照需要整理commit信息(默认全部显示),保存退出,再看一下git log,显示3个commit已经被合成一个了。

5、最后一步,推送到远端分支:
git push origin your_branch_name -f

done~

cherry-pick用法

单个commit 只需要 git cherry-pick commitid

多个commit 只需要 git cherry-pick commitid1..commitid100 // 即两个commit之间用两个.号连接。

注意,不包含第一个commitid , 即 git cherry-pick (commitid1..commitid100]

长期存储密码

git config --global credential.helper store

设置之后会提示重新输入用户名和密码。

git diff 总是先删后加的解决办法

说明:代码迁移的时候,使用了 F6 进行重构,但是经常会出现明明只改了包的路径,但是一提交代码就发现 +9999行 -9999行之类的。

原因:可能是迁移代码时,idea 帮忙格式化了代码,导致文件的换行符号发生了变化,但这个从表面上看不出来,只能通过 BC 工具进行比对才能看到。

$ git config --global --unset-all core.autocrlf

备注:2023年1月10日19:57:30,好像不行。

posted on 2023-07-13 17:27  彦承  阅读(12)  评论(0编辑  收藏  举报