Git 常用命令

Git Note

提交到版本库

  • git add . -> git commit -m "msg"
  • git commit -a -m "msg"
  • 追加文件,重新提交:git commit --amend
  • 重新提交并修改最后一次提交信息:git commit --amend -m "msg" 然后:git push --force

添加远程库

  • 查看远程库:git remote -v
  • 添加远程库:git remote add upstream

修改远程库

  • 修改远程库URL:git remote set-url origin
  • 删除远程库:git remote rm origin

更新upstream到本地

  • 使用pull 例:git pull <远程主机名> <远程分支名>:<本地分支名> 例:git pull upstream master:master
  • 如果合并需要采用rebase模式,可以使用–-rebase选项:git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
  • 使用fetch 然后merge:git fetch <远程主机名> <分支名> -> git merge <远程主机名>/<分支名> or git rebase <远程主机名>/<分支名>
  • 同步删除远程分支:git -c core.quotepath=false fetch upstream --progress --prune
  • 使用remote update:git remote update -> git merge <远程主机名>/<分支名> or git rebase <远程主机名>/<分支名>
  • 在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态: git rebase --abort

更新到自己远程仓库(origin)

  • git push origin master
  • 第一次和远程库关联:git push -u origin master,由于远程库是空的,在第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
  • 强制push:git push --force origin

分支管理

  • 创建dev分支,然后切换到dev分支:git checkout -b <分支名>,命令加上-b参数表示创建并切换。
  • 也可以用这两个命令创建dev分支:git branch <分支名> -> git checkout <分支名>
  • git checkout -b <分支名> <远程主机名>/<分支名>
  • 查看分支:git branch
  • 查看远程分支:git branch -r
  • 查看所有分支:git branch -a
  • 查看分支追踪:git branch -vv
  • 切换分支:git checkout <分支名>
  • 切换远程分支:git checkout --track <远程主机名>/<分支名>
  • 创建一个追踪分支:git checkout -b <分支名> --track <远程主机名>/<分支名>
  • 合并某分支到当前分支:git merge <分支名>
  • rebase,如果有冲突,git rebase --abort,再换用merge
  • 删除分支:git branch -d <分支名>
  • 删除远程分支:git push <远程主机名> :<远程分支名>
  • 删除远程分支:git push origin --delete

Tag

  • 添加轻量级的Tag:git tag
  • 添加Tag指定commit id:git tag
  • 添加带有说明的标签,用-a指定标签名,-m指定说明文字:git tag -a -m
  • 删除tag:git tag -d
  • 推送到远程:git push <远程主机名>
  • 推送全部尚未推送到远程的本地标签:git push <远程主机名> --tags
  • 查看Tag:git tag
  • 查看Tag信息:git show

Log

https://git-scm.com/book/zh/v1/Git-基础-查看提交历史

  • Log:git log
  • 单行显示Log:git log --pretty=oneline
  • 单选简短Log:git log --pretty=oneline --abbrev-commit
  • 图形化表示:--graph 例:git log --pretty=oneline --graph --abbrev-commit
  • 记录每一次命令:git reflog
  • 查看操作时间:git reflog show --date=iso
  • 显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:git log -p -2
  • git diff:显示暂存区和工作区的差异
  • git diff --cached [file]:显示暂存区和上一个commit的差异
  • git diff HEAD:显示工作区与当前分支最新commit之间的差异
  • git diff :显示两次提交之间的差异
  • git show :显示某次提交的元数据和内容变化
  • git show --name-only :显示某次提交发生变化的文件
  • git show ::显示某次提交时,某个文件的内容
  • git blame :显示指定文件是什么人在什么时间修改过

版本回退

  • 显示版本号:git log git reflog
  • 回退到上个版本:git reset --hard HEAD^
  • 根据commit id回退版本:git reset --hard
  • 回退单个文件:git checkout --

撤销修改

https://git-scm.com/book/zh/v1/Git-基础-撤消操作#取消已经暂存的文件

  • 工作区的修改撤销文件:git checkout --
  • 工作区的修改全部撤销:git checkout -- .
  • 暂存区的修改全部撤销:git reset HEAD

删除文件

  • 删除文件后:git add/rm 然后提交:git commit
  • 恢复误删的文件:git checkout --

储藏(Stashing)

  • 储藏: git stash
  • 查看储藏: git stash list
  • 查看内容:git stash show -p
  • 储藏的工作重新应用:git stash apply
  • 移除储藏:git stash drop stash@{0}
  • 恢复的同时把stash内容删除: git stash pop
  • 清空Stash:git stash clear

Git config

  • 查看当前用户(global)配置:git config --global --list
  • 查看当前仓库配置信息:git config --local --list
  • git config --global user.name "YOUR NAME"
  • git config --global user.email "EMAIL ADDRESS"
  • Generating a new SSH key:ssh-keygen -t rsa -b 4096 -C "[email protected]"
  • Test SSH connection:ssh -T [email protected]

Other

  • 二分法查找bug:git bisect start git bisect good

你可能感兴趣的:(Git 常用命令)