Git使用手册

作者: 者文_ | 来源:发表于2022-02-13 00:19 被阅读0次

1. Git安装

git在Linux、MAC、Window上的安装步骤见google,安装完成后,配置用户名与邮箱

$ git config --global user.name"Your Name"
$ git config --global user.email"email@example.com"

--global表示全局配置,如果想单独为该项目配置,不添加该参数

若想取消全局配置:

$ git config --global --unset user.name
$ git config --global --unset user.email

为不同项目配置不同的信息

修改配置后,如果想查看git配置文件:

$ cat ~/.gitconfig

也可以用:

$ git config user.name
或者
$ git config --global user.name

1.1 本文编辑器

Git 会使用操作系统默认的文本编辑器,通常是 Vim。 如果你想使用不同的文本编辑器,例如 Emacs,可以这样做:

$ git config --global core.editor emacs

如果你希望选择文本编辑软件,则:

$ git config --global core.editor="C:/'Program Files'/Notepad++/Notepad++.exe"

如果要删除默认文本编辑软件:

$ git config --unset  --global core.editor

1.2 配置信息检查

要检查已有的配置信息,可以使用 git config --list 命令:

$ git config --list

你可以通过输入 git config <key>: 来检查 Git 的某一项配置,例如:

$ git config user.name

如果想要需求git命令帮助,可以使用:

$ git help <verb>

例如,你想查看关于配置config的命令,可以

$ git help config

1.3 乱码信息处理

git bash终端也要设置成中文和utf-8编码。才能正确显示中文

在git bash的界面中右击空白处,弹出菜单,选择:Options->Text->Locale改为zh_CN,Character set改为UTF-8

status查看有改动但未提交的文件时总只显示数字串,显示不出中文文件名,这是因为中文文件名在工作状态传输,不能正确显示,处理方法:

$ git config --global core.quotepath false

2. Git版本库

2.1 创建版本库

首先选择一个地方,创建一个空目录

$ mkdir GitTest #创建一个GitTest的目录
$ cd GitTest
$ pwd

其中pwd用于显示当前目录

初始化仓库

$ git init

初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中,若想看见这个.git文件,则:

$ ls -ah

2.2 克隆版本库

如果想要获得一份已经存在的Git仓库拷贝,则需要用git clone命令,格式为git clone [url],例如:

$ git clone https://github.com/libgit2/libgit2

如果你想在本地自定义仓库名,可以使用:

$ git clone https://github.com/libgit2/libgit2 mylibgit #将远程仓库本地自定义名为mylibgit

2.3 推送仓库到远程

假设要连接到远程仓库(例如github):

判断是否在github上设置过SSH KEY,如果没有需要设置

创建SSH key

C盘用户目录下有没有.ssh目录,有的话看下里面有没有id_rsaid_rsa.pub这两个文件,有就跳到下一步,没有就通过下面命令创建

$ ssh-keygen -t rsa -C "youremail@example.com"

在用户下的.ssh目录里找到id_rsaid_rsa.pub这两个文件

添加SSH key

登陆github,在setting中选中SSH and GPG KEYS,选择new SSH key,把刚才id_rsa.pub里面的内容复制到Title下面的Key内容框里面

在github上创建一个仓库,在本地仓库运行命令

$ git remote add origin git@github.com:zhewendev/GitStudy.git

其中zhewendev/GitStudy.git换成自己的github账号名与仓库名

本地内容推送到远程仓库

$ git push -u origin master

(新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后可以不加这个参数)

备注

创建远程仓库的时候,如果你勾选了Initialize this repository with a README,会报错,由于你新创建的那个仓库里面的README文件不在本地仓库目录中,需要先合并:

$ git pull --rebase origin master

之后再push就可以了

3. Git基础操作

image

3.1 提交流程

工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪

已跟踪的文件是指本来就被纳入版本控制管理的文件,而所有其他文件都属于未跟踪文件

确定当前目录哪些文件处于什么状态,可以用git status命令

git status

如果要跟踪(暂存)一个文件,使用git add命令

git add .  #跟踪当前工作目录下所有未跟踪文件

如果要跟踪指定文件,则在后面带上指定文件名,例如:

git add java.java

如果要查看指定文件修改的细节,可以使用git diff命令:

$ git diff java.java  #查看java.java这个文件的修改细节
diff --git a/java.java b/java.java
index f093797..0de4939 100644
--- a/java.java
+++ b/java.java
@@ -1,2 +1,2 @@
 hello world
-nice to meet you!
\ No newline at end of file
+nice
\ No newline at end of file

前述示例可以看到代码nice to meet you!被更改为nice

前述git status输出的状态较为详细,如果想要查看简单状态报告,可以使用git status -sgit status --short

$ git status -s #查看简单状态报告
 M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt
  • ??:表示未跟踪文件
  • A:表示新添加到暂存区
  • M:右边的表示文件修改未放入暂存区,左边表示修改并放入暂存区

有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件

创建.gitignore文件

touch .gitignore

之后就可以在.gitignore文件中编辑需要忽略的文件了,其采用标准的glob模式匹配

文件 .gitignore格式规范如下

  • 所有空行或者以 开头的行都会被 Git 忽略。
  • 可以使用标准的 glob 模式匹配。
  • 匹配模式可以以(/)开头防止递归。
  • 匹配模式可以以(/)结尾指定目录。
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

glob模式即简化的正则表达式,详细语法规则可自行google查阅。

示例:在.gitignore编辑

*.[oa]  #忽略所有以.o或.a结尾的文件

查看已暂存的文件内容,可以使用git diff --staged命令

git diff --staged

暂存区保存妥当,可以提交,使用git commit命令

git commit -m"[D190920]提交java.java文件"

其中 -m后面带这次提交的注释,不可缺

如果觉得git add太繁琐,想一次提交已跟踪的文件,可以在git commit命令加 -a

git commit -a -m 'added new benchmarks'

移除文件,可以直接在文件管理器中将其删除,或者使用rm命令

git rm jjj.docx #移除jjj.docx文件

这个时候Git版本库还存在这个文件,可以git rm命令移除,然后提交

git rm jjj.docx
git commit -m"移除jjj.docx文件"

文件恢复:如果删错了,且还没有提交,可以将文件恢复

git checkout -- jjj.docx

git checkout其实是用版本库里的版本替换工作区的版本

移动文件或重命名,需要使用git mv命令

git mv jjj.docx test/ #将jjj.docx文件移动到test目录下

如果要重命名,示例:

git mv jjj.docx kkk.docx  #重命名

3.2 提交历史

查看提交历史,这个时候需要用到git log命令

git log

如果不带任何参数,则按提交时间列出所有更新。

可以在后面加各种参数,例如

git log -p -2 #最近两次提交和每次提交的内容差异

查看提交的简略统计,使用--stat选项

git log --stat

在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了

指定不同默认格式的方式展示提交历史,使用--pretty选项

$ git log --pretty=oneline

pretty后面还可以带shortfullfuller

定制显示记录格式,可以用git log --pretty=format命令

$ git log --pretty=format:"%h - %an, %ar : %s"

关于format后面选项写法与意义,参考:常用选项

关于git log后面携带的其他参数和各种参数的意义,可以参考前面的常用选项

一般使用git log --oneline查看log,简洁

3.3 撤销操作

提交信息修改:如果提交完发现有文件漏了或者提交信息错误时,可以运行带有 --amend 选项的提交命令尝试重新提交:

$ git commit --amend

版本回退

在Git中,用HEAD表示当前版本,即最新提交,上一个版本即HEAD^,以此类推,往上100个版本可以写成:HEAD~100

当前版本回退到上一个版本,使用git reset命令

$ git reset HEAD^

如果想要回退到指定的版本,reset后面带该版本的commitid即可

$ git reset 9abcfe5

git reset命令不带--hard参数则回退后当前的代码不会改变,如果带该参数,则代码等文件内容页回退到指定版本的内容

$ git reset --hard 9abcfe5

查看所有提交操作:git提供了git reflog命令记录每一次命令

$ git reflog

撤销add操作:如果你将某文件add后又后悔了,可以使用git reset HEAD命令

$ git reset HEAD jjj.docx

如果想撤销所有add的文件,则:

$ git reset HEAD

撤销文件修改:修改了某个文件但是又后悔了,想回退则:

$ git checkout -- jjj.docx

如果想想撤销工作区所有文件的修改,则:

$ git reset --hard HEAD

3.4 远程仓库操作

查看远程仓库,使用git remote命令

$ git remote

查看远程仓库使用的Git保存简写和对应URL,需要带上-v参数

$ git remote -v

查看某个远程仓库,使用git remote show [name]命令

$ git remote show origin

会列出远程仓库的 URL 与跟踪分支的信息等等

远程仓库重命名,使用git remote rename命令

$ git remote rename origin zhewendev

前述命令将origin远程仓库改为zhewendev了

3.5 标签操作

查看标签:查看所有已打标签,使用git tag命令:

$ git tag

如果只对某些标签感兴趣,可以使用特定模式查找,示例:

$ git tag -l 'v1.8.5*'

上述命令列出1.8.5 系列所有标签

创建标签:分为附注标签轻量标签

  • 附注标签:当你在运行 tag 命令时指定 -a 选项,示例:

    $ git tag -a v1.0.0 -m"my version 1.0"
    

    -m 选项指定了一条将会存储在标签中的信息。

    通过使用 git show 命令可以看到标签信息与对应的提交信息:示例:

    $ git show v1.0.0
    

    输出显示了打标签者的信息、打标签的日期时间、附注信息,然后显示具体的提交信息

  • 轻量标签:轻量标签本质上是将提交校验和存储到一个文件中

    $ git tag v1.0.0
    
  • 后期创建标签:可以对过去提交打tag,假设提交历史为:

    5f558d4 (HEAD -> master, origin/master) java.java文件提交
    1053e9a 添加jjj.docx文件
    df163fe [D190920]提交java.java文件
    d61cc88 Initial commit
    

    你想在提交java.java文件这个提交之后打tag,可以:

    $ git tag -a v1.0.0 df163fe
    

共享标签:将标签推送到远程分支,默认不共享,示例:

$ git push origin v1.0.0

如果要一次性推送多个标签

$ git push origin --tags

删除标签:删除本地分支标签,使用git tag -d命令,示例:

$ git tag -d v1.4-lw

必须使用 git push <remote> :refs/tags/<tagname> 来更新你的远程仓库:

$ git push origin :refs/tags/v1.0.0

根据标签创建分支:通过git branch <new-branch-name> <tag-name>命令,示例:

$ git branch test_dev v1.0.0

3.6 配置别名

配置别名:可以通过 git config 文件来轻松地为每一个命令设置一个别名,示例:

$ git config --global alias.st status
$ git config --global alias.ci commit
$ git config --global alias.unstage 'reset HEAD'

git st表示git status命令,git ci表示git commit命令,git unstage 表示 git reset HEAD命令其他命令由此类推

--global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。如果不加,那只针对当前的仓库起作用。

配置文件

每个仓库的Git配置文件都放在.git/config文件中,别名就在[alias]后面,要删除别名,直接把对应的行删掉即可。

4. 分支操作

4.1 分支创建与合并

新建分支:使用git branch 命令,示例

$ git branch test_dev

切换分支:使用git checkout 命令,示例

$ git checkout test_dev

新建分支并切换

$ git checkout -b test_dev

分支合并:假设你在test_dev修改了问题,并切换到master分支,将test_dev分支合并到master中

$ git merge test_dev

分支删除:若想删除某个分支,可以用git branch -d命令,示例:

$ git branch -d test_dev

合并冲突:合并分支或者提交代码等情况可能存在冲突,情况可能如下:

<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
 please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

这表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(======= 的上半部分),而 iss53 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。

4.2 分支管理

展示分支:查看分支使用git branch命令

$ git branch

查看每一分支最后提交:使用git branch -v命令:示例

$ git branch -v

查看分支合并情况:查看哪些分支已经合并或未合并到当前分支,可以用--merged--no-merged 这两个有用的选项,若分支已删除则显示不出:

$ git branch --merged
$ git branch --no-merged

4.3 变基操作

rebase 命令将提交到某一分支上的所有修改都移至另一分支上,示例:

$ git checkout experiment
$ git rebase master

它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master)的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件,然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用

image

现在回到 master 分支,进行一次快进合并。

$ git checkout master
$ git merge experiment
image

备注:不要对在你的仓库外有副本的分支执行变基。

5. 其他技巧

模糊记忆快捷键: Ctrl + R,按Tab补充完整,按enter键直接回车执行,这里会显示之前输入过的命令。

相关文章

  • Git book

    目录 git community book git入门 git笔记 git 用法 git安装使用手册 git命令大...

  • git技术,GitHub、GitLab

    git学习 Git教程(小白快速入门版) Git教程(简化版) git详细学习 Gitlab的管理使用手册git初...

  • git 常用使用总结

    常用资料网站 git Flow git使用手册 How do I fix merge conflicts in G...

  • git使用手册

    git使用手册 [TOC] git命令示意图 http://www.ruanyifeng.com/blog/201...

  • 2020-02-21 git 和 tmux

    1. tmux tmux的使用和配置 tmux使用手册 2. git 猴子都能看懂的git入门-git索引 git...

  • git获取帮助出现No manual entry for git

    使用 Git 时需要获取帮助,有三种方法可以找到 Git 命令的使用手册:$ git help $ g...

  • Git的基本使用

    Git的基本使用 关于Git官网提供的《pro git》应该是最全面,最权威的使用手册了。关于Git的具体概念,来...

  • Git——获取帮助

    获取帮助 使用Git获取帮助,有三种方法可以找到Git命令的使用手册:1.$ git help 2.$...

  • git 的 branch(分支) 命令行 总结

    git分支的原理就不讲了,可以看看Git使用手册3 —— Git 分支(上).本文对分支常用的命令进行了增删查改的...

  • Module-Git使用手册

    Linux-Git使用手册.md GitHub插入MarkDown图片 Github常用脚本 使用脚本 命令大全 ...

网友评论

    本文标题:Git使用手册

    本文链接:https://www.haomeiwen.com/subject/jbtflrtx.html