Git取消commit/版本回退

一、基本概念 ref

二、操作方法

三、总结

  • 取消commit时,尽量使用git reset –soft,他可以保留已经staged的内容
  • git reset和revert的区别是:假设git log:A B C (A为HEAD指向的即最新的commit)。
    • 前者操作直接git reset –soft/mixed/hard C返回到某个指定的commit C,那么HEAD指向的即最新的commit为C,A和B直接消失;
    • 后者操作会重新生成一个commit(需要自定义),比如你要返回commit C,应该操作为 git revert -n B(相当于撤销B和B之后的更新,指向C)
  • 将新的修改追加到之前某个commit:git rebase(教程)
  • 如果想放弃当前所有的更改,直接git reset -hard,会清空工作区、暂存区。

四、references

 

git只track某些类型文件或者文件夹

修改.gitignore文件

/*               #忽略所有文件
!*.doc           #排除文件类型或者文件夹
!*.docx
!*.ppt
!*.pptx
!*.xls
!*.xlsx
!*.txt
!*.pdf
!*.png
!*.jpg
!*.jpeg
!*.bmp
!*.ipynb
!*.java
!*.py
!*.json
!*.csv

ref:https://blog.csdn.net/mn960mn/article/details/44172167

git修改commit详情(用于追加修改)

不建议使用此命令,因为修改后commit的id改变了,push会出现冲突(git push –force可解决,但是会修改远程库的commitID,ref

git commit –amend既可以对上次提交的内容进行修改,也可以修改提交说明;

git log -n #显示前n个commit,并记下需要修改的commit ID

git rebase -i <commmit-hash-ID> 
#显示commmit-hash-ID前一个commit到最新commit的所有记录,需要修改哪个commit就把pick更改#为edit,因为git commit --amend指向最新的commit


然后git add .
继续git commit --amend
修改这个message保存即可。

git rebase --continue #回到修改前的位置
如果是追加修改的话,即对最新的commit不满意:直接git add新的修改(即不需要rebase),然后直接git commit –amend直接覆盖;

注意:修改后会出现commit的id发声变化,无法与远程库同步,即push会冲突,所以不建议这么做!

ref:git rebase 修改以前提交过的内容

git learning &4 分支管理

1.常见命令

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

2.本地分支push到 不同名的远程分支(eg:本地a分支的内容需要同步到远程master分支)

查看分支的对应情况
①本地(创建)切换同名分支,然后将别的分支合并到该同名分支,然后push到远程端
git checkout master
git merge a
git push  # will push 'master'

②git push origin a:master

③git push --all origin

3.保留当前分支工作区,切换到其他分支

git stash    #保存当前分支的工作现场
切换分支回来之后
git stash pop #恢复工作现场

ref:Git push won’t do anything (Everything up-to-date)