本文所有命令均经过实战检验,请放心使用…

查看远程分支

$ git branch -a

显示:

* master
  remotes/origin/2015-08-04
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/branchName1
  remotes/origin/branchName2

删除远程分支

$ git push --delete origin branchName

显示:

To git@git.coding.net:user_name/project.git
 - [deleted]         branchName

清理本地在远程已不存在的分支

使用 git branch -a 命令可以查看所有本地分支和远程分支(git branch -r 可以只查看远程分支)
发现很多在远程仓库已经删除的分支在本地依然可以看到。
使用命令 git remote show origin,可以查看 remote 地址,远程分支,还有本地分支与之相对应关系等信息。
此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用 git remote prune origin 命令后显示:

Pruning origin
URL: https://xxx@xxx.xxx/xxx/xxx.git
 * [pruned] origin/develop
 * [pruned] origin/bug

这样就删除了那些远程仓库不存在的分支。

放弃本地修改,强制使用远程覆盖

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

还原项目到指定版本

使用 git status 命令,找到目标版本的commit id,如 37d5d5275591cb17928d155d12a8aecd993df718, 执行如下命令:

$ git reset --hard 37d5d5

若本项目还有其他尚未提交的修改,建议先备份已修改内容,或直接备份整个项目,再执行上述命令。

将指定文件,还原到指定的历史版本

找到目标版本的commit id,例如将文件 abc.txt(不考虑该文件已被修改的情况) 还原到 37d5d5275591cb17928d155d12a8aecd993df718 版本,命令如下:

$ git reset 37d5d5 abc.txt

重复提示:Unlink of file ‘path/to/file’ failed. Show I try again? (y/n)

执行 git checkout origin/master -- path/to/file时报此异常:
输入y后依旧提示相同问题
此异常有可能是,需要更新的文件被某些进程占用,无法释放,导致文件不能更新。
找到占用此文件的进程,关闭后再更新即可。

导出指定分支的最新版本

git archive -o my_project.zip master

导出当前分支的指定版本

commit id 必须为全部,不能省略

git archive -o ../my_project.zip c163b0be54d9cd33af6bd7073b22185689e9c698

切换到指定版本

git checkout ${commit_id}

切回到最新版本

git checkout -

在历史记录中查找已删除的文件

如果不知道已删除文件的完整路径,可以使用下面的命令:

git log --all --full-history -- **/thefile.*

如果知道已删除文件的完整路径,可以使用下面的命令:

git log --all --full-history -- <path-to-file>

参考:Git: How to search for a deleted file in the project commit history? - Stack Overflow

About Me
WEB开发工程师
GitHub Repos