张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 关于

常用Git命令和操作

2018-03-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会包含大量的信息,可以滚屏显示:

向下滚动

向上滚动

默认情况下,将会显示每个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文件支持通配符:

标签、分支和合并

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有三个去处:

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

git reset --hard HEAD^

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

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