有用的Git相关汇总

平时收集的一些有用的git命令(持续更新):

  • git reset –hard: 去掉所有改动,比如某些文件被改动了,用这招可以将它们都干掉,主要用于处理刚刚接手的杂乱版本,后面跟上commit号就会跳到对应的版本。
  • git diff –diff-filter=D –name-only -z ¦ xargs -0 git rm 批量删除所有被delete的文件
  • git branch –merged master ¦ grep -v master ¦ xargs git branch -d 删除所有已经与master合并的分支,用于清理中间的一个本地git库
  • git clean -fd: 干掉所有untracked file and folder,上面这招不会去掉新添加的文件或文件夹,靠这招更加彻底清除。
  • git branch -D: 干掉一个分支,主要用于去掉那些已经没有意义的分支,如fix某个bug的分支。
  • git checkout – :去掉被add了的文件,用.表示去掉所有被add的文件。
  • git checkout -b : 从当前分支分出一个新分支,主要用于创建一个feature或bug分支。
  • git diff <commit id1/reflog id> <commit id2/reflog id> : 查看某个文件两个不同版本间的差别。
  • git log :查看某个文件的历史记录,如果没则表示整个branch的历史记录,加–color表示生成一个树状图,-p表示查看修改详情。
  • git fetch会同步git库和本地库的版本信息,而不会真正下载代码。
  • git checkout version_number /path/to/file 将某个文件切换到指定的版本。
  • git stash用于将当前修改缓存下来,方便切到其它分支工作;完成工作后切回来用git stash pop。
  • git 回滚远程代码库

步骤一:本地先回滚到正确的版本。用git reset –hard version_number version_number可以是commit号或reflog编号。

步骤二:将本地版本强制推送到远端,覆盖远程版本。用git push origin master -f

步骤三:将线上服务器同步到git代码库。直接用git pull origin master是不行的,因为这时候往往线上服务器比代码库更新。所以需要执行下面的命令来强制同步:

  1. git fetch –all
  2. git reset –hard origin/master

    这样就同步好了。基本原理可以参考http://stackoverflow.com/questions/1125968/force-git-to-overwrite-local-files-on-pull。这样做比直接删代码风险要小一些。
  • git log -p –name-only 其中的–name-only是个非常好用的参数,可以用来只显示改动的文件,可以与其它很多命令搭配起来用。
  • git init –bare用于在server端新建一个repo,随后在本地代码文件夹下git init再git add remote对应的地址就可以将本地与server关联上了。
  • git checkout -b –orphan branchname 从当前分支产生一个无历史的新分支,可以用来分享代码。
  • git config –global push.default current 设置全局push默认的分支为当前分支,执行后可以通过git push来推送当前分支,而不需要显式写出分知名。
  • git reflog 查看本地的git命令执行历史。
  • git fetch 同步本地和远程的分支信息,尤其可以消除“Your branch is ahead of ‘origin/master’ by 1 commit.”这样的提醒。
  • git mv old_name new_name 用于重命名一个文件。免去rm+add的重复劳动。
  • git branch -a 查看远程分支。
  • git push origin –delete branch_name 根据分支名删除远程分支。
  • git push origin –delete tag tag_name 根据tag删除远程分支。
  • git checkout mybranch; git rebase origin 把自己的分支以patch的形式加到origin分支上,与pull或merge产生的效果类似,但“看起来“历史不同,参考http://gitbook.liuhui998.com/4_2.html。