miller
发布于

git 命令

  • 推荐款 mac git工具, sourcetree ( Intellij 集成的git 也不错, 能具体查看某个函数的历史记录)

  • git clone --depth=1 只拉取最后一次commit .不要历史记录 。 体积很小,即可解决文章开头提到的项目过大导致Timeout的问题,他只会把默认分支clone下来,其他远程分支并不在本地

拉取其他分支
$ git clone --depth 1 https://github.com/dogescript/xxxxxxx.git
$ git remote set-branches origin 'remote_branch_name'
$ git fetch --depth 1 origin remote_branch_name
$ git checkout remote_branch_name
  • git pull --unshallow 恢复原有的记录

  • --depth=100:指定拉取的深度为 100 个提交记录(可以根据需要调整)。

  • git fetch --depth=10 再多拉取一点

  • 有时候sourcetree cherry pick后, 有问题,又没有提交上去; commit又没有数据 ; 运行下面这个,把上次cherry pick 的出错干掉
    git cherry-pick —abort

  • git branch 查看本地分支

  • git branch -r 查看远程所有分支

  • git branch -a 查看本地和远程所有分支

  • git branch -d 删除本地分支

  • git branch -d -r 删除远程分支

  • git branch -D name 强制删除分支

  • git checkout 切换分支名 . 如果远程同名会拉下来切换过去。

  • git checkout -b newbranchName . 如果同名后,可以git branch --set-upstream-to=origin/cdn 绑定上

  • git branch -r 查看远程分支

  • git merge branchName . 把branchName合并到当前分支

  • git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态

  • git checkout filename 只恢复某一个文件。放弃修改。配合 git status看

  • git checkout bde896be07053 只回到那个时间节点。可以git log 查看。 前6位就好

  • git reset --hard origin/master 错误提交后,reset掉,这样不会有历史.但提交的东西也没了
    git reset --hard master 强制恢复到本地master最后一次提交
    git reset --hard origin/master 强制恢复到远程的master

  • 下面两条命令来删除远程分支
    git branch -r -d origin/branch-name 特殊的加双引号

  • 时间长了的git, 会有很多重复东西
    运行;git gc (如果卡住出错了,rm -rf .git/objects/pack/tmp_pack_*) ,期间出错多重复几次

- 断点续传

git clone 不行
用git init
git fetch git://…..git
即使断掉了,可以继续
git fetch git://…..git
等到fetch完会出现以下字样
From git://….
*branch HEAD -> FETCH_HEAD
意思是把最新的数据fetch到了本地的FETCH_HEAD分支上去了
然后用git checkout FETCH_HEAD

初始化项目

git init
这样,一个空的版本库就创建好了,并在当前目录中创建一个叫 .git 的子目录。以后,所以的文件变化信息都会保存到这个目录下,而不像CVS那样,会在每个目录和子目录下都创建一个讨厌的CVS目录。
在.git目录下有一个config文件, 需要我们添加一下个人信息后才能使用。否则我们不能对其中添加和修改任何文件。

浏览 (1974)
点赞
收藏
评论