代码回退

本地回退代码

  1. git reset --hard HEAD^ //恢复到上一次提交
  2. git reset --hard HEAD^1 //恢复到前2次提交
  3. git reset --hard commit_id //恢复到某一次提交
  4. git reset HEAD filename.ext //撤销添加的文件, git add filename.ext的反操作

本地回退代码要同步到远程仓库

  1. git push -f //`-f`强制推送到远程仓库

如果你的错误提交已经提交到远程仓库并且之后还有别人提交的代码,那么就要试一下下面命名回退代码

  1. git revert -n commit_id
  2. git commit -m commit_id

如果git时输错密码,导致clone不下来

  1. fatal: authentication failed for 'http://xxx'

WINDOWS:打开凭证管理器找到对应账号密码修改再试即可

查看某几次提交的文件变动

HEAD表示当前提交 HEAD~1表示倒数第1次提交 HEAD~3表示倒数第3次提交 列出倒数第1次提交到最新1次提交的文件变动

  1. git diff --name-status $(git rev-parse HEAD) $(git rev-parse HEAD~1)

打包某两次提交的代码

打包倒数第1次提交到最新1次提交的代码

  1. git archive -o ./latest-$(git rev-parse --short HEAD)-$(git rev-parse --short HEAD~1).zip $(git rev-parse HEAD) $(git diff --name-only $(git rev-parse HEAD) $(git rev-parse HEAD~1) --diff-filter=d)

方法1

  1. //oldcommitID:不包含这次提交的文件
  2. git diff --name-only oldcommitID lastcommitID | xargs zip filename.zip
  3. git diff --name-only oldcommitID lastcommitID | xargs tar -jcvf filename.tar.zip

方法2

  1. git archive -o ./latest-$(git rev-parse --short HEAD~3)-$(git rev-parse --short HEAD).zip $(git rev-parse HEAD~3) $(git diff --name-only $(git rev-parse HEAD~3) $(git rev-parse HEAD) --diff-filter=d )

本地仓库关联远程仓库

  1. git remote add origin repository
  2. git push -u origin master

如果更新时提示,fatal: refusing to merge unrelated histories,则执行git pull origin master --allow-unrelated-histories

忽略本地已经追踪了的文件

  1. git update-index --assume-unchanged filename //忽略文件
  2. git update-index --no-assume-unchanged filename //恢复记录忽略的文件

移除已经追踪了的文件

  1. git rm -rf —cached filename //不再追踪
  2. filename commit -m “rm” //提交修改到本地,filename此时变成untracked
  3. 将需要忽略的文件添加到.gitignore文件中

这些文件需要重新 git add filename 才能被再次追踪

克隆一个新项目

  1. git clone https://github.com/singi2016cn/webpack-start.git

查看所有分支

  1. git branch -a

从远端新建本地分支并切换过去

  1. git checkout -b branch origin/branch

添加文件或目录到暂存区

  1. git add <file>

取消已添加到暂存区的文件或目录的修改

  1. git checkout -- <file>

提交添加的文件到本地仓库

  1. git commit -m <message>

取消commit到本地仓库

  1. git rm <file>

提交本地仓库的文件到远端仓库

  1. git push

更新远端仓库到本地

  1. git pull