热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Git命令_常用git命令备忘录,开发者必备

本文由编程笔记#小编为大家整理,主要介绍了常用git命令备忘录,开发者必备相关的知识,希望对你有一定的参考价值。前言使用Git前先熟悉几个专用名词。Wo
本文由编程笔记#小编为大家整理,主要介绍了常用git命令备忘录,开发者必备相关的知识,希望对你有一定的参考价值。

前言

使用Git前先熟悉几个专用名词。

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

技术图片一、新建代码库

在当前目录新建一个 Git 代码库 $ git init 新建一个目录,将其初始化为 Git 代码库 $ git init [project-name] 下载一个项目和它的整个代码历史 $ git clone [url] 二、配置

Git 的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

显示当前的 Git 配置

$ git config --list

编辑 Git 配置文件

$ git config -e [--global]

设置提交代码时的用户信息

$ git config [--global] user.name "[name]"

$ git config [--global] user.email "[email address]" 三、增加/删除文件

添加指定文件到暂存区

$ git add [file1] [file2] ...

添加指定目录到暂存区,包括子目录

$ git add [dir]

添加当前目录的所有文件到暂存区

$ git add .

删除工作区文件,并且将这次删除放入暂存区

$ git rm [file1] [file2] ...

停止追踪指定文件,但该文件会保留在工作区

$ git rm --cached [file]

改名文件,并且将这个改名放入暂存区

$ git mv [file-original] [file-renamed] 四、代码提交

提交暂存区到仓库区

$ git commit -m [message]

提交暂存区的指定文件到仓库区

$ git commit [file1] [file2] ... -m [message]

提交工作区自上次 commit 之后的变化,直接到仓库区

$ git commit -a

提交时显示所有 diff 信息

$ git commit -v

使用一次新的 commit,替代上一次提交如果代码没有任何新变化,则用来改写上一次 commit 的提交信息

$ git commit --amend -m [message]

重做上一次 commit,并包括指定文件的新变化

$ git commit --amend ... 五、分支

列出所有本地分支

$ git branch

列出所有远程分支

$ git branch -r

列出所有本地分支和远程分支

$ git branch -a

新建一个分支,但依然停留在当前分支

$ git branch [branch-name]

新建一个分支,并切换到该分支

$ git checkout -b [branch]

新建一个分支,指向指定 commit

$ git branch [branch] [commit]

新建一个分支,与指定的远程分支建立追踪关系

$ git branch --track [branch] [remote-branch]

切换到指定分支,并更新工作区

$ git checkout [branch-name]

建立追踪关系,在现有分支与指定的远程分支之间

$ git branch --set-upstream [branch] [remote-branch]

合并指定分支到当前分支

$ git merge [branch]

选择一个 commit,合并进当前分支

$ git cherry-pick [commit]

删除分支

$ git branch -d [branch-name]

删除远程分支

$ git push origin --delete $ git branch -dr 六、标签

列出所有 tag

$ git tag

新建一个 tag 在当前 commit

$ git tag [tag]

新建一个 tag 在指定 commit

$ git tag [tag] [commit]

查看 tag 信息

$ git show [tag]

提交指定 tag

$ git push [remote] [tag]

提交所有 tag

$ git push [remote] --tags

新建一个分支,指向某个 tag

$ git checkout -b [branch] [tag] 七、查看信息

显示有变更的文件

$ git status

显示当前分支的版本历史

$ git log

显示 commit 历史,以及每次 commit 发生变更的文件

$ git log --stat

显示某个文件的版本历史,包括文件改名

$ git log --follow [file]

$ git whatchanged [file]

显示指定文件相关的每一次 diff

$ git log -p [file]

显示指定文件是什么人在什么时间修改过

$ git blame [file]

显示暂存区和工作区的差异

$ git diff

显示暂存区和上一个 commit 的差异

$ git diff --cached []

显示工作区与当前分支最新 commit 之间的差异

$ git diff HEAD

显示两次提交之间的差异

$ git diff [first-branch]...[second-branch]

显示某次提交的元数据和内容变化

$ git show [commit]

显示某次提交发生变化的文件

$ git show --name-only [commit]

显示某次提交时,某个文件的内容

$ git show [commit]:[filename]

显示当前分支的最近几次提交

$ git reflog 八、远程同步

下载远程仓库的所有变动(不会自动merge)

$ git fetch [remote]

显示所有远程仓库

$ git remote -v

显示某个远程仓库的信息

$ git remote show [remote]

增加一个新的远程仓库,并命名

$ git remote add [shortname] [url]

取回远程仓库的变化,并与本地分支合并

$ git pull [remote] [branch]

上传本地指定分支到远程仓库

$ git push [remote] [branch]

强行推送当前分支到远程仓库,即使有冲突

$ git push [remote] --force

推送所有分支到远程仓库

$ git push [remote] --all 九、撤销

恢复暂存区的指定文件到工作区

$ git checkout [file]

恢复某个 commit 的指定文件到工作区

$ git checkout [commit] [file]

恢复上一个 commit 的所有文件到工作区

$ git checkout .

重置暂存区的指定文件,与上一次 commit 保持一致,但工作区不变

$ git reset [file]

重置暂存区与工作区,与上一次 commit 保持一致

$ git reset --hard

重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变

$ git reset [commit]

重置当前分支的 HEAD 为指定 commit,同时重置暂存区和工作区,与指定 commit 一致

$ git reset --hard [commit]

重置当前 HEAD 为指定 commit,但保持暂存区和工作区不变

$ git reset --keep [commit]

新建一个 commit,用来撤销指定 commit,后者的所有变化都将被前者抵消,并且应用到当前分支

$ git revert [commit] 十、其他命令

生成一个可供发布的压缩包

$ git archive十一、使用meld做git的diff工具

1)安装meld

$ sudo apt-get install meld

2)创建gitmeld.sh脚本

这么做是因为Git会送7个参数给Meld,但是Meld只需要两个参数,两个需要比较的文件名。所以不能直接用Meld

$ vim ~/gitmeld.sh

    #!/bin/sh

    meld $2 $5

$ chmod +x ~/gitmeld.sh

3)配置git配置

$ git config --global diff.external ~/gitmeld.sh

之后再使用git diff就会自动关联到meld。如果有多个文件,会依次使用meld打开,关闭第一个比较窗口后会自动打开第二个文件的比较结果。

4)若要取消meld关联

修改 ~/.gitconfig配置,把关联命令注释掉即可。


推荐阅读
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
  • linux网络子系统分析(二)—— 协议栈分层框架的建立
    目录一、综述二、INET的初始化2.1INET接口注册2.2抽象实体的建立2.3代码细节分析2.3.1socket参数三、其他协议3.1PF_PACKET3.2P ... [详细]
  • 本文档详细介绍了软通动力Java开发工程师职位的笔试题目,涵盖了Java基础、集合框架、JDBC、JSP等内容,并提供了详细的答案解析。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • Git核心命令全解析:掌握日常开发必备技能
    本文深入解析了 Git 的核心命令,帮助开发者掌握日常开发中的必备技能。从 `git init` 命令开始,介绍了如何将当前目录转变为 Git 可管理的仓库。接着详细讲解了 `git add` 命令的使用方法,包括如何将文件(如 `readme.txt`)添加到暂存区,以便在后续提交时进行版本控制。此外,还探讨了其他关键命令,如 `git commit` 和 `git push`,以确保代码变更能够安全地保存和同步到远程仓库。通过这些命令的综合应用,开发者可以更加高效地管理和协作项目。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • spring boot使用jetty无法启动 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文详细介绍了如何在 Vue CLI 3.0 和 2.0 中配置 proxy 来解决开发环境下的跨域问题,包括具体的配置项和使用场景。 ... [详细]
author-avatar
lisen0001
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有