Git学习笔记之常用技巧

Git放弃本地强制更新

git fetch --all
git reset --hard origin/master

撤销暂存的文件(文件已经git add,但是尚未提交)

git reset  HEAD file  

丢弃工作区的修改(还原对文件的修改)

git checkout -- file 

git打包应用

git archive --format zip --output "../e-business.zip" master -0

这里的-0表示不压缩

添加子模块

git submodule add [子模块地址]

初次拉取子模块

git submodule update --recursive --init

删除子模块

git submodule deinit asubmodule
git rm asubmodule
git rm --cached asubmodule

rm -rf .git/modules/asubmodule

子模块更新,拉取最新的子模块代码

git submodule update --remote

删除Gitignore的文件

有时候新增了文件,文件已经被git缓存,但是并没有提交,这时候希望不提交该文件,将其加入到.gitignore文件中,问题是此时再git status,会发现该文件还是在列表中,可以用下列命令将文件缓存清除,解决该问题。

git rm 要删除的文件 --cached

参考自 Stackoverflow

Cherry-pick

如果你不慎忘记切换到master分支,又做了提交,可以用cherry-pick命令挽救。

具体做法如下:

  1. git checkout masterHEAD 从游离状态切换到 master 分支, 这时候,git会报Warning说有一个提交没有在branch上,记住这个提交的change-id(假如change-id为 aaaa)
  2. git cherry-pick aaaa 来将刚刚的提交作用在 master 分支上
  3. git push 将更新提交到远程版本库中

参考 Git Submodule的坑

修改远程仓库地址

get remote set-url origin URL

修改最有一次提交的注释

提交的时候注释写错了怎么修改?使用git commit --amend命令

git commit --amend
Scroll Up