了解下Git常用命令

了解下Git常用命令

Git 常用命令

  • 比较差异
    git diff master..test 比较两个分支差异
    git diff master…test 找出‘master’,‘test’的共有父分支和’test’分支之间的差异
    git diff 工作目录与暂存区(本地索引index区)的差异
    git diff –cached 暂存区(index区)与本地repo之前差异
    git diff HEAD 工作区和暂存区(workplace、index)与本地库repo之前的差异
    git diff HEAD — ./lib 工作区和暂存区目录lib(workplace、index)与本地库repo之前的差异
    git diff test 当前分支的工作区与test分支之前差异
    git diff –stat 统计有哪些文件被改动,有多少行被改动

  • 分支重命名
    git branch -m oldName newName 修改本地分支名
    git push –delete origin oldName 删除远程分支名
    git push origin newName 上传新分支到远程

  • 恢复暂存区
    git rm path/to/file --cached 将文件从暂存区索引中删除,但是仍然会将文件保留在工作目录
    git rm file -f 完全删除文件

  • Reset
    git reset --hard : 去除所有修改,包括索引中的内容和工作目录中的修改 (修改版本库,修改暂存区,修改工作区)
    git reset --mixed: 混合的重置会保留当前工作目录中的改动,去除索引中的内容修改(修改版本库,修改暂存区,保留工作区)
    git reset --soft : 仅仅是重置本地工作目录的(修改版本库,保留暂存区,保留工作区)
    git reset --hard COMMIT_ID or git reset --hard path/to/file 对指定文件
    git checkout path/file 重置本地修改到上一次提交

  • 暂存
    git stash 保存当前的工作进度。会分别对暂存区和工作区的状态进行保存
    git stash save "message..." 这条命令实际上是第一条 git stash 命令的完整版
    git stash list 显示进度列表。此命令显然暗示了git stash 可以多次保存工作进度,并用在恢复时候进行选择
    git stash pop [--index] [<stash>] 如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作进度列表中清除。如果提供参数(来自 git stash list 显示的列表),则从该 <stash>中恢复。恢复完毕也将从进度列表中删除 <stash>。选项–index 除了恢复工作区的文件外,还尝试恢复暂存区。
    git stash apply [--index] [<stash>] 除了不删除恢复的进度之外,其余和 git stash pop 命令一样
    git stash clear 删除所有存储的进度
    然而,如果工作目录中有未追踪的文件,默认情况下是不会将其存入临时储藏区的
    git stash --include-untracked 可以暂存所有修改包括未追踪文件

  • 历史记录
    git log 显示提交记录
    git show COMMIT_ID/HEAD/BRANCH 显示更详细某一次的信息
    git blame path/to/file 查看某个文件的提交历史记录

  • 修复错误提交
    git commit --amend 可以删除前一次提交,并创建一个新的提交记录以替代之前的提交
    git rebase -i origin/master 交互式变基: 它可以用来编辑提交信息,或者将多个提交压缩成一个提交
    git revert COMMIT_ID 恢复一个有问题的提交, 命令会创建一个新的提交,让当前项目状态恢复到指定提交之前

  • 合并
    git merge branch_name 将branch_name分支合并到当前分支
    git cherry-pick COMMIT_ID 将指定提交合并到当前分支,这个提交可以为任意分支的提交

发表评论

电子邮件地址不会被公开。 必填项已用*标注

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax