创建仓库

  • 从一个现有仓储建立纯仓库

    git clone --bare ssh://git@github.com:22/QianChenglong/home.git home.git
    
  • 从.git目录复制https://git.wiki.kernel.org/index.php/GitFaq#How_do_I_make_existing_non-bare_repository_bare.3F

    scp -rv .git dev2:~/git/Beme4wdServer.git
    cd Beme4wdServer.git/
    git config --bool core.bare true
    
  • 从本地目录

    git clone file:///path/to/repo.git/
    
  • 修改远程URL

    git remote set-url origin ssh://wallace@dev2:36000/~/git/home.git
    
  • 查看远程信息

    git remote -v
    git remote show origin
    
  • 从远程仓库取数据,不合并分支

    git fetch [remote-name]
    
  • push所有分支和tag,并跟踪

    git push --all origin -u
    

update-index

  • 添加可执行权限

    git update-index --chmod=+x config_server
    
  • 标识已纳入版本的文件不必跟踪变化

    git update-index --assume-unchanged <files>
    git update-index --no-assume-unchanged <files>(撤销)
    git ls-files -v(小写字母说明设置了该标志位)
    

分支

  • 查看所有分支

    git branch
    
  • 查看分支详情,最后一次commit

    git branch -v
    
  • 查看当前已经合并的分支

    git branch --merged
    
  • 查看当前没有合并的分支

    git branch --no-merged
    
  • 新建分支

    git branch testing
    
  • 切换分支

    git checkout testing
    
  • 新建分支并切换

    git checkout -b issue53
    
  • 删除分支

    git branch -d hotfix
    
  • 设置跟踪分支

    git branch --set-upstream-to=origin/master master
    

子模块

  • 添加模块

    git submodule add ssh://wallace@dev2.beme.com:36000/~/git/ssh.git .ssh
    
  • 修改url

    vim .gitmodule
    git submodule sync
    
  • 初始化

    git submodule init
    
  • 更新

    git submodule update
    

管理

  • 取消未暂存的修改

    git checkout -- <file>...
    

reset

功能:

  • 从HEAD拷贝到INDEX(重置暂存区),若指定PATH(文件名),则只操作指定文件(这种情况下,最好使用git checkout -- <paths>)

    git reset
    
  • 将HEAD指定到COMMIT

    git reset [<mode>] <commit>
    
    • –mixed [默认] INDEX同HEAD一起更新到<commit>,WORK不变

    • –soft INDEX,WORK保持不变,HEAD更新到<commit>

    • –hard INDEX,WORK同HEAD一起更新到<commit>

revert

恢复到指定commit,是复制指定commit并使HEAD指向它

commit

  • 重做上次提交,并使用上次提交信息

    git commit --amend --no-edit
    

rm

  • 从INDEX删除,但保留工作目录里面的

    git rm --cached <paths>
    
  • 强制删除已修改已暂存的文件(当前暂存区与上次提交的不一样)

    git rm -f <paths>
    
  • 从INDEX,WORK中删除

    git rm <paths>
    

diff

  • 查看当前版本与上一版本的差异

    git diff HEAD~1 HEAD functions/fish_prompt.fish
    
  • 查看暂存版本与工作目录中的差异

    git diff
    
  • 查看暂存与上一次提交的差异

    git diff --cached
    
  • 查看commit之间的差异

    git diff <commit1> <commit2> <path>
    

config

  • 配置解包内存

    git config --global pack.windowMemory 256m
    
  • 查看配置

    git config --list
    

实例

  • 同步home

    git init
    git remote add origin ssh://wallace@112.74.81.30:36000/~/git/home.git
    git fetch
    git reset --hard origin/master
    
  • 初始化并递归更新submodule

    git submodule update --init --recursive
    

留言

2016-08-17