Git笔记
主要内容来自参考文章,以个人理解整理。
git add . 和 git add * 的区别
git add .
:把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤
git add *
:忽略.gitignore把任何文件都加入
删除 GitHub 上 repository 里的文件
代码 push 到 GitHub 上后,便 rm 了本地 repository 的某个文件,如何也删除掉 GitHub 上的这个文件呢
git add .
git commit -a -m ""
git push
git add
只能加入原来没有被跟踪的文件,没有把删除这个行为也加入版本控制,-commit
时添加 -a
选项。
撤销 git commit 的内容
git reset --soft HEAD^
HEAD^
的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2
其他参数:
参数 | 意思 |
---|---|
--mixed | 不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。 |
--soft | 不删除工作空间改动代码,撤销commit,不撤销git add . |
--hard | 删除工作空间改动代码,撤销commit,撤销git add . 注意完成这个操作后,就恢复到了上一次的commit状态。 |
如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
git默认不关心大小写
git是默认不区分大小写的,如果先有一个Atest文件夹,后来将文件夹的名称改为了atest,然而在Github上是不会将大写改为小写的。
进入.git文件夹,将config文件的 ignorecase=true
改为 ignorecase=false
。
git问题
假如你刚clone了远程仓库dev分支,然后基于dev分支创建了自己的本地开发分支xyz,并进行了一些代码修改工作,这时候同事A告诉你他修复了一个重要bug,并已经merge到远程dev分支了。请问如何同步你本地的xyz分支并解释为什么?
git checkout dev && git pull -r && git checkout - && git rebase dev
如果bug不影响我的分支就不着急更新,我倾向于尽量保持分支间的依赖关系简单点。 如果需要更新的话,方法其实很多了,我一般是先pull dev,然后再把xyz重新rebase一下,原因还是希望分支的关系尽量简单。
提交合并前 rebase 一下推上去
参考文章
https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/removing-sensitive-data-from-a-repository