git 常规操作--这一篇就够了

秒文镇楼

https://www.cnblogs.com/lfxiao/p/9378763.html

https://baijiahao.baidu.com/s?id=1627328817332384564&wfr=spider&for=pc (squash)

git 图形化界面来一个(vscode有插件)

 目标

1、保证git tree提交顺序 (及时rebase master commit)

2、每次需求master只有一个commit(git squash合为一个)

 结论

add commit pull (merge)方式,commit时间是正确的,add commit rebase方式,commit时间顺序是乱的,commit时间该是几点就是几点。

rebase master中commit 到本地,squash时候只是squash我commit的,master的不受影响。

正向

git add . git commit -m 'fix'

逆向

git reset HEAD^   回退一步

HEAD~n  回退n步

reset参数

--mixed 默认  保留源码反向commit   add

--soft  保留源码只反向commit   add操作未反向

--hard 不保留源码

git pull origin master 引起的merge操作(commit+merge branch),算一步。

 

(commit代码,拉了下master代码,引入了其他commit)(一步reset操作即可去除红框内三个)

 

 

rebase

commit完,git rebase master,保证树形结构流畅。

master在1点拉代码到分支,一顿改和在1点半 commit,2点小明提交到master一些commit ,3点准备整理代码提交到master,rebase下,我这次提交的所有commit都会跑到小明的之后。1点半的commit会在小明提交的commit之后。

 

 

rebase操作后,master上所有已提交commit皆会拉到本地分支,保证git tree提交顺序(说了这么多,这才是最终目标)

git reset --hard ...误操作找回代码

git reflog,然后找到对应状态,git reset --hard ...

 

改了gitignore不生效

git rm -r --cached .

git add .

git commit -m 'update .gitignore'

原文地址:https://www.cnblogs.com/fengluzheweb/p/13087087.html