git仓库

  1. 初始化一个版本仓库
1
git init
  1. clone远程版本库
1
git clone git@github.com:myself659/FFmpeg.git 
  1. 添加远程版本库origin
1
git remote add origin git@github.com:myself659/rtmpserver_demo.git 
  1. 查看远程仓库信息
1
git remote -v
  1. 删除远程仓库
1
git remote rm <repository>

git修改

  1. 添加当前修改的文件到暂存区
1
git add .
  1. 提交修改到本地
1
git commit -m "fix bug 0001"
  1. 提交修改到远程
1
git  push -u origin  master  
  1. 查看修改状态
1
git  status  
  1. 重命名文件
1
git mv README  readme 
  1. 从版本库中删除文件
1
git rm readme 
  1. 取消对文件修改
1
git checkout -- readme 
  1. 修改最新一次修改注释
1
git commit amend 
  1. 显示所有提交
1
git show  
  1. 恢复最后一次提交的状态
1
git revert HEAD 
  1. 恢复某次提交的状态
1
git revert <$id>

git log

  1. 查看修改log
1
git log 
  1. 查看指定文件每次提交记录
1
git log <filename>
  1. 查看最近两次详细修改内容的diff
1
git log -p -2
  1. 查看提交统计信息
1
git log --stat 

git分支

  1. 查看远程分支
1
git branch -r 
  1. 创建新分支
1
git branch <new_branch>
  1. 查看各分支创建最后提交信息
1
git branch  -v 
  1. 删除指定分支
1
git  branch  -d <branch_name> 
  1. 强制删除指定分支
1
git  branch  -D  <branch_name> 
  1. 查看已经被合并到当前分支的分支
1
git branch --merged
  1. 查看尚未被合并到当前分支的分支
1
git branch  --no-merged
  1. 合并分支
1
git merge <merge_branch> 
  1. 切换分支
1
git checkout <branch_name>
  1. 抓取远程仓库所有分支更新并合并到本地
1
git pull  
  1. 抓取远程仓库所有分支更新并合并到本地,不要快进合并
1
git  pull --no-ff
  1. 抓取远程仓库更新
1
git fetch origin
  1. push所有分支
1
git push 
  1. 将本地主分支推到远程主分支
1
git  push  origin  master 
  1. 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
1
git  push -u  origin  master 
  1. 创建远程分支
1
git push origin <local_branch>:<remote_branch>
  1. 查看所有分支名称
1
git branch --all 

git diff

  1. 比较当前文件和暂存区文件差异
1
git diff <file>
  1. 比较两次提交之间的差异
1
git diff <$id1> <$id2>
  1. 比较两个分支
1
git diff <branch1> <branch2>
  1. 比较统计信息
1
git diff --stat 

misc

  1. 提交文件超过100M
1
git filter-branch -f --index-filter "git rm -rf --cached --ignore-unmatch slides/tt.sql" -- --all

提交代码到新分支

  1. 创建新分支
1
git checkout  -b  feature-43
  1. 添加修改
1
git add  .
  1. 提交修改到本地
1
git commit  -m  "f43"
  1. 将本地修改推送到指定分支
1
git push  origin  feature-43 

丢弃本地修改

1
git reset --hard <the sha1 hash>

拉取所有分支

1
git pull --all
1
2
3
4
#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
    git branch --track "${branch##*/}" "$branch"
done
1
2
3
4
5
6
7
8
9
#!/bin/sh
# Usage: fetchall.sh branch ...

set -x
git fetch --all
for branch in "$@"; do
    git checkout "$branch"      || exit 1
    git rebase "origin/$branch" || exit 1
done

查看远程git地址

1
git config --get remote.origin.url