git部分命令

2020-06-18  本文已影响0人  gaookey

初次运行 Git 前的配置

配置全局的用户名和邮箱,mac下可通过终端输入命令cat ~/.gitconfig查看配置信息。

git config --global user.name "mouos"
git config --global user.email swiftprimer@gmail.com

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

取得项目的 Git 仓库

初始化新仓库

要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:

git init
从现有仓库克隆
git clone https://github.com/mouos/repository.git

如果希望在克隆的时候,自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字

git clone https://github.com/mouos/repository.git gitRepository

记录每次更新到仓库

检查当前文件状态

红色表示工作目录的文件被修改但还没有提交到暂存区,绿色表示已经提交到暂存区。

git status

以极简的方式显示文件状态:git status -s

跟踪新文件

将文件从工作目录添加至暂存区,git add [file1] [file2] ...

git add README
查看已暂存和未暂存的更新

要查看尚未暂存的文件更新了哪些部分,不加参数直接输入 git diff:此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。

git diff

若要看已经暂存起来的文件和上次提交时的快照之间的差异,可以用 git diff --cached 命令。

git diff --cached
提交更新
git commit

-m 参数后跟提交说明的方式

git commit -m "message"

提交暂存区的指定文件到仓库区:git commit [file1] [file2] ... -m [message]

跳过使用暂存区域

Git 提供了一个跳过使用暂存区域的方式,只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add

git commit -a -m "a message"

该命令相当于以下两条命令:

git add .:把所有修改的信息添加到暂存区

git add -m "message":将暂存区的修改提交到本地仓库

查看提交历史

默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。每次更新都有一个 SHA-1 校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。

git log

-p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:

git log -p -2

format可以定制要显示的记录格式

git log --pretty=format:"%h - %an, %ar : %s"
选项 说明
    %H 提交对象(commit)的完整哈希字串
    %h 提交对象的简短哈希字串
    %T 树对象(tree)的完整哈希字串
    %t 树对象的简短哈希字串
    %P 父对象(parent)的完整哈希字串
    %p 父对象的简短哈希字串
    %an 作者(author)的名字
    %ae 作者的电子邮件地址
    %ad 作者修订日期(可以用 -date= 选项定制格式)
    %ar 作者修订日期,按多久以前的方式显示
    %cn 提交者(committer)的名字
    %ce 提交者的电子邮件地址
    %cd 提交日期
    %cr 提交日期,按多久以前的方式显示
    %s 提交说明

撤消操作

修改最后一次提交

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

git commit --amend

重做上一次commit,并包括指定文件的新变化:git commit --amend [file1] [file2] ...

取消已经暂存的文件

已经被提交到暂存区的文件,可以通过命令git reset HEAD -- fileName撤销提交。

git reset HEAD README
取消对文件的修改

已经被修改但还没提交到暂存区的文件,可以通过命令git checkout -- fileName撤销更改。

git checkout -- README

远程仓库的使用

查看当前的远程库

查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。

git remote

也可以加上 -v 选项(译注:此为 --verbose 的简写,取首字母),显示对应的克隆地址,显示所有远程仓库

git remote -v
添加远程仓库

要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行 git remote add [shortname] [url]

git remote add sp https://github.com/mouos/repository.git

现在可以用字符串 pb 指代对应的仓库地址了。比如说,要抓取所有 Paul 有的,但本地仓库没有的信息,可以运行 git fetch pb 下载远程仓库的所有变动

git fetch sp

现在,Paul 的主干分支(master)已经完全可以在本地访问了,对应的名字是 pb/master,你可以将它合并到自己的某个分支,或者切换到这个分支,看看有些什么有趣的更新。

从远程仓库抓取数据
git fetch [remote-name]

此命令会到远程仓库中拉取所有你本地仓库中还没有的数据。运行完成后,你就可以在本地访问该远程仓库中的所有分支,将其中某个分支合并到本地,或者只是取出某个分支,一探究竟。

获取远程主机上master分支的代码:git fetch origin

在本地新建gwl分支,并将远程主机上master分支代码下载到本地gwl分支:git fetch origin master:gwl

通过git fetch所取回的更新,在本地主机上需要用“远程主机名/分支名”的形式读取,比如origin主机的master分支,就需要用origin/master来读取。所以,git fetch origin 会抓取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。有一点很重要,需要记住,fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。

如果设置了某个分支用于跟踪某个远端仓库的分支(参见下节及第三章的内容),可以使用 git pull 命令自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支。在日常工作中我们经常这么用,既快且好。实际上,默认情况下 git clone 命令本质上就是自动创建了本地的 master 分支用于跟踪远程仓库中的 master 分支(假设远程仓库确实有 master 分支)。所以一般我们运行 git pull,目的都是要从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。

git pull命令的作用是获取远程主机某个分支的更新,再与本地指定分支合并。git pull <远程主机名><远程分支名>:<本地分支名>

取回远程主机上的gwl分支与本地的master分支合并:

git pull origin gwl:master

取回远程仓库的变化,并与本地分支合并。取回远程主机上的gwl分支与当前分支合并:

git pull origin gwl

该命令相当于以下两条命令:

推送数据到远程仓库

上传本地指定分支到远程仓库:git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到 origin 服务器上(克隆操作会自动使用默认的 master 和 origin 名字),可以运行下面的命令:

git push origin master
查看远程仓库信息

git remote show [remote-name] 查看某个远程仓库的详细信息,比如要看所克隆的 origin 仓库,可以运行:

git remote show origin
远程仓库的删除和重命名

git remote rename 命令修改某个远程仓库在本地的简称,比如想把 sp 改成 sp,可以这么运行:

git remote rename sp ps

移除对应的远端仓库

git remote rm ps

删除远程gwl分支:

git push origin --delete gwl
打标签
列显已有的标签
git tag

显示的标签按字母顺序排列,所以标签的先后并不表示重要程度的轻重。

我们可以用特定的搜索模式列出符合条件的标签。在 Git 自身项目仓库中,有着超过 240 个标签,如果你只对 1.4.2 系列的版本感兴趣,可以运行下面的命令:

git tag -l 'v1.4.2.*'
新建标签
含附注的标签

创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:

git tag -a v1.4 -m 'my version 1.4'

-m 选项则指定了对应的标签说明,Git 会将此说明一同保存在标签对象中。如果没有给出该选项,Git 会启动文本编辑软件供你输入标签说明。

可以使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象。

git show v1.4

分支

分支的新建与切换

新建并切换到该分支,运行 git checkout 并加上 -b 参数:

git checkout -b gwl

这相当于执行下面这两条命令:

git branch gwl
git checkout gwl

转换到 master 分支:

git checkout master
分支的合并

回到 master 分支并把gwl合并进来。用 git merge 命令来进行合并:

git checkout master
git merge gwl

删除分支

git branch -d gwl
遇到冲突时的分支合并

git merge gwl 命令合并冲突时,使用 git status 命令查看状态,unmerged: 的文件即为冲突文件,解决完冲突后,再运行一次 git status 来确认所有冲突都已解决,modified: 的文件即为解决冲突的文件。确认所有冲突都已解决,也就是进入了暂存区,就可以用 git commit 来完成这次合并提交。

分支的管理

git branch 命令不仅仅能创建和删除分支,如果不加任何参数,它会显示当前所有分支的列表,列表中带 * 的字符表示当前所在的分支。

新建一个分支,但依然停留在当前分支:git branch [branch-name]

git branch

若要查看各个分支最后一个提交对象的信息,运行 git branch -v

git branch -v

git branch --merge 查看哪些分支已被并入当前分支

git branch --merged

git branch --no-merged 查看尚未合并的工作

git branch --no-merged

它会显示还未合并进来的分支。由于这些分支中还包含着尚未合并进来的工作成果,所以简单地用 git branch -d 删除该分支会提示错误,因为那样做会丢失数据。不过,如果你确实想要删除该分支上的改动,可以用大写的删除选项 -D 强制执行,就像上面提示信息中给出的那样。

查看本地分支:git branch

查看本地和远程分支:git branch -a

gwl分支名字改为spgit branch -m gwl sp。针对本地仓库操作,不影响远程仓库。

列出所有远程分支:git branch -r

推送本地分支

如果你有个叫 gwl 的分支需要和他人一起开发,可以运行 git push (远程仓库名) (分支名)

git push origin gwl
上一篇 下一篇

猜你喜欢

热点阅读