常用Git命令和操作

常用Git命令和操作

2018-3-27 作者: 张子阳 分类: 其他

这篇文章记录了本地单机使用Git时,经常用到的一些Git命令,以便查阅和参考。

下载、安装、配置

下载Git

https://git-scm.com/

下载并安装完成后,进入到项目文件夹,按右键,会出现Git的两个菜单:

选择Git Bash进入命令行界面,即可执行本篇文章后面的操作。

配置Git

#列出当前的配置
git config --list

# 设置Git用户名
git config --global user.name "名字"

# 设置Git邮箱
git config --global user.email "<your-email-address>"

# 确保 Git 输出内容带有颜色标记
git config --global color.ui auto

配置编辑器

编辑器用于在commit时填写说明。

#Atom Editor 设置
git config --global core.editor "atom --wait"

#Sublime Text 设置
git config --global core.editor "C:/Program Files/Sublime Text 2/sublime_text.exe' -n -w"

#VSCode 设置
git config --global core.editor "code --wait"

创建Repository仓库

创建新仓库

git init

用于在当前文件夹下创建一个新的空仓库,位于.git隐藏文件夹中。

克隆现有仓库

git clone [url仓库地址] [仓库名称,可以不填,默认与现有仓库名称相同]

默认地将创建一个与被克隆的仓库名称相同的目录。

查看当前仓库的状态

git status

查看仓库历史记录

git log命令

git log

显示当前仓库的变更状态。有时候log会包含大量的信息,可以滚屏显示:

向下滚动

  • j 或 ↓ 一次向下移动一行
  • d 按照一半的屏幕幅面移动
  • f 按照整个屏幕幅面移动

向上滚动

  • k 或 ↑ 一次向上移动一行
  • u 按照一半的屏幕幅面移动
  • b 按照整个屏幕幅面移动
  • 按下 q 可以退出日志(返回普通的命令提示符)

默认情况下,将会显示每个commit的:SHA、作者、日期、注释。

简化git log的显示

git log --oneline

在同一行中,并只显示SHA和注释。

查看具体修改了哪些文件

git log --stat
  • 显示被修改的文件
  • 显示添加/删除的行数
  • 显示一个摘要,其中包含修改/删除的总文件数和总行数

查看文件修改的内容

git log --patch
git log -p

使用此命令将会显示文件修改,同时会显示大量信息。

查看指定commit修改的文件内容

有两个命令都可以实现这个操作。

git log -p [SHA前7位]
git show [SHA前7位]
#git log -p fsa51d

向仓库提交Commit

git add命令

用于将文件从工作目录(Working Directory)提交到暂存区(Staging Index)。

# 加入指定文件
git add [filename1] [filename2]
# 加入所有文件
git add .

git commit命令

用于将暂存区中的文件提交到库中。

直接使用git commit命令,会弹出git config中配置的编辑器,需要写入commit的注释。

使用 git commit -m "注释内容" 则不会弹出编辑器,一步完成,更快捷一些。

git diff命令

git diff 显示你已经保存,但是尚未移交至暂存区(当然也没有commit) 的更改。

忽略文件

如果想将目录下的某些文件忽略掉,不提交到库中,可以创建.gitignore文件,然后将文件名写入。

.gitignore文件支持通配符:

  • # - 将行标记为注释
  • * - 与 0 个或多个字符匹配
  • ? - 与 1 个字符匹配
  • [abc] - 与 a、b 或 c 匹配

标签、分支和合并

git tag命令

# 显示当前的所有标签
git tag
# 创建带注释的标签
git tag -a [version]

选项-a表示创建一个带注释的标签,它通常包含如下信息:

  • 标签创建者
  • 标签创建日期
  • 标签消息

建议使用此种方式。如果不提供选项-a,即 git tag [version],则会创建一个轻量级的标签。

# 删除标签
git tag -d [version]

#向之前的某次提交添加标签
git tag -a [version] [a87984] 

git branch命令

显示分支

注意上图,有一个head指针,head指针标明了当前工作目录所在的分支,也叫活跃分支。

# 查看现在的所有分支
git branch

假设有两条分支branch1、branch2,则结果可能如下所示:

  branch1
* master
  branch2

注意*号表示当前head指针所在的分支。

创建新分支

git branch [branchname]

创建新的分支后,活跃指针依然会位于当前分支,而不会位于新分支。

如果想要切换到新的分支,则需要使用git checkout命令:

git checkout [branchname]

如果要在创建新分支后,立即切换到新分支,可以加入-b选项:

git checkout -b [newbranch]

如果想使新分支的起点位置与basebranch一致,可以使用下面的命令:

git checkout -b [newbranch] [basebranch]

git log默认显示当前所在分支的日志,如果想要显示所有分支的日志,可以使用下面的命令:

git log --oneline --graph --all 

删除分支

git branch -d [branchname]
  1. 不能删除当前分支,需要先checkout到其他分支后才能删除该分支。
  2. 如果分支上有其他分支都不包含的commit(分支从未合并过),则也不能删除。 因此该命令是安全的。

如果要强制删除某一分支(会丢失未合并的commit),使用大写的D选项。

合并分支

分支合并:将其他分支合并到当前(检出的)分支上。我们不是将两个分支合并到一个新的分支上。也不是将当前分支合并到其他分支上。

git merge [branchname]

合并冲突

合并时可能出现冲突,即两个分支修改了同一位置,此时,编辑冲突的文件,然后再重新合并。

撤销更改

更改最后一次commit

git commit --amend

这里分为了两种情况:

1、如果你的工作目录没有内容(也就是仓库中没有任何未 commit 的更改),那么运行 git commit --amend 将使你能够重新编辑 commit 消息。代码编辑器将打开,并显示原始 commit 消息。只需要重新编写注释即可。

2、如果你刚commit之后,又发现了一个相同的问题要修改,此时虽然可以连续commit,但是commit的说明可能都是一样的,它们本身应当属于同一个commit,而不是多个。此时,可以使用这个命令,它将会将多次commit合为同一个commit(相当于修改最后一次commit)。

还原commit

还原会执行和commit完全相反的操作。它会撤销目标commit所做的更改,并且创建一个新的commit记录这一更改。

git revert [commit-sha]

重置commit

假设有一个文件修改后提交到了暂存区,但是还没有commit,则可以使用下面的命令还进行还原:

# 将文件撤出暂存区
git reset [filename]

# 还原文件(覆盖当前修改)
git checkout [filename]

引用之前的某次commit

可以使用HEAD^和HEAD~来引用之前的某次commit

引用父级Commit:
HEAD^ 
HEAD~
祖父Commit
HEAD^^
HEAD~2    

还有一个需要特别注意的引用,^2。当commit位于两个分支合后的位置时,^引用第一个父(运行git merge时所处的分支),而^2引用第二个父,也就是被合并的分支。

git reset 用来清除commmit,根据选项的不同,清除后的commit有三个去处:

  • --mix 将丢弃的commit放入工作目录
  • --soft 将丢弃的commit放入暂存区
  • --hard 彻底丢弃

假设刚刚合并完一个分支,则下面的命令可以撤销合并分支:

git reset --hard HEAD^

简单介绍到这里了,还需要多实践,多练习才能够更好的掌握,但是应付大多数情况应该没有什么问题了。

感谢阅读,希望这篇文章能给你带来帮助!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小怪聊职场

GIT分支管理和常用命令

master 分支 不能往master 分支上提交代码,只能在该分支上进行代码合并操作,例如将其它分支的代码合并到 Master 分支上。 develop ...

11320
来自专栏玩转JavaEE

Git基本操作

上篇文章我们简单的介绍了Git的诞生和发展,然后也说了Windows环境下Git的安装和一些基本的配置,本文我们就来说一说Git中的一些基本概念和基本操作。 本...

30680
来自专栏linjinhe的专栏

Git命令备忘

git commit -m commitMessage提交的时候不会记录这些还没暂存(git add)起来的变化。

22090
来自专栏Huramkin的归档库

GitHub使用(一)

GitHub的版本控制系统,用来上传与管理代码非常方便,当然可以选择比如像SourceTree这类GUI,但是Git可以使用更多的功能。

8010
来自专栏JMCui

SVN学习笔记.

一、什么是SVN?        Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。 这些数据...

48270
来自专栏mukekeheart的iOS之旅

SVN服务器的搭建和使用

仓库的目录说明: db目录:就是所有版本控制的数据存放文件。 hooks目录:脚本文件的目录。 locks目录:用放置hook来放置Subversion文件库锁...

30480
来自专栏Python攻城狮

Git的使用1.Git简介2.安装3.远程仓库4.本地仓库

博客地址:https://ask.hellobi.com/blog/zhiji 欢迎大家来交流学习。

9440
来自专栏Jackson0714

配置Meld为git的默认比较工具

290100
来自专栏互扯程序

想要学Git,这一篇就够了

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

11230
来自专栏LIN_ZONE

Git 简单入门(一)

在安装之前先试着输入git 看看系统有没有安装Git,如果没有的话就要进行安装了,方法如下:

9620

扫码关注云+社区

领取腾讯云代金券