从开始安装git到灵活运用git
什么是git
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
如何安装git
Git 各平台安装包下载地址为:https://gitforwindows.org
- 第一步先去官网下载exe文件
- 无脑式安装
全部都是下一步即可。 - 用户信息
配置个人的用户名称和电子邮件地址:
$ git config --global user.name "你的用户名"
$ git config --global user.email 你的邮箱
- 文本编辑器
Git默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 喜欢使用Emacs 的话,可以重新设置:
$ git config --global core.editor emacs
- 如何使用调用git控制台
新建一个文件夹,在文件夹内点击鼠标右键出现以下弹窗后选择Git Bash Here
6. 查看配置信息 要检查已有的配置信息,可以使用git config --list
命令:控制台输出内容如下
$ git config --list
http.postbuffer=2M
user.name=你的用户名
user.email=你的邮箱
- Git 工作流程
一般工作流程如下:
1.克隆 Git 资源作为工作目录。
2.在克隆的资源上添加或修改文件。
3.如果其他人修改了,你可以更新资源。
4.在提交前查看修改。
5.提交修改。
6.在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
- Git 工作区、暂存区和版本库
工作区:就是你在电脑里能看到的目录。
暂存区:一般存放在 .git 目录下的 index 文件(.git/index)中。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。 - Git 创建仓库
Git init
Git 使用git init
命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以git init
是使用 Git 的第一个命令。
在执行完成git init
命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
git clone
repo:Git 仓库
directory:本地目录。
我们使用 git clone
从现有 Git 仓库中拷贝项目
克隆仓库的命令格式为:
git clone <repo>
如果我们需要克隆到指定的目录,可以使用以下命令格式:
git clone <repo> <directory>
Git 基本操作
Git 常用的是以下 6 个命令:
git clone
、git push
、git add
、git commit
、git checkout
、git pull
克隆(从现有 Git 仓库中拷贝项目):git clone
推送(把暂存区的文件推送到版本库,也就是远程仓库):git push
提交(把本地的文件推送到暂存区):git commit
添加(把一些新文件进行更替):git add
切换分支:git checkout
拉取(拉去远程库的文件到本地库):git pull
一个简单的操作步骤:
$ git init
初始化仓库。
$ git add .
添加文件到暂存区。
$ git commit
将暂存区内容添加到仓库中。
Git 分支管理
创建分支命令:
git branch 分支的名字
切换分支命令:git checkout 分支的名字
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容, 所以多个分支不需要多个目录。
合并分支命令:
git merge
你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支。
代码运行案例
$ mkdir gitdemo
$ cd gitdemo/
$ git init
Initialized empty Git repository...
$ touch README
$ git add README
$ git commit -m '第一次版本提交'
[master (root-commit) 3b58100] 第一次版本提交
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README
在控制台里面使用命令创建文件
touch 文件名
Git合并冲突
什么是合并,合并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。
什么是冲突,冲突是指两个人的提交同一个文件时的不同内容
如何解决Git合并冲突
1.先拉取所需要上传的文件
2.修改或者删除不需要的文件内容
3.再重新上传
代码演示
Git 查看提交历史
Git 提交历史一般常用两个命令:
git log
- 查看历史提交记录。
git blame <file>
- 以列表形式查看指定文件的历史修改记录。
git log
在使用 Git 提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用 git log
命令查看。
针对我们前一章节的操作,使用git log
命令列出历史提交记录如下:
$ git log
commit d5e9fc2c811e0ca2b2d28506ef7dc14171a207d9 (HEAD -> master)
Merge: c68142b 7774248
Author: runoob <test@runoob.com>
Date: Fri May 3 15:55:58 2019 +0800
Merge branch 'change_site'
commit c68142b562c260c3071754623b08e2657b4c6d5b
Author: runoob <test@runoob.com>
Date: Fri May 3 15:52:12 2019 +0800
修改代码
commit 777424832e714cf65d3be79b50a4717aea51ab69 (change_site)
Author: runoob <test@runoob.com>
Date: Fri May 3 15:49:26 2019 +0800
changed the runoob.php
commit c1501a244676ff55e7cccac1ecac0e18cbf6cb00
Author: runoob <test@runoob.com>
Date: Fri May 3 15:35:32 2019 +0800
我们可以用 --oneline 选项来查看历史记录的简洁的版本。
$ git log --oneline
$ git log --oneline
d5e9fc2 (HEAD -> master) Merge branch 'change_site'
c68142b 修改代码
7774248 (change_site) changed the runoob.php
c1501a2 removed test.txt、add runoob.php
3e92c19 add test.txt
3b58100 第一次版本提交
这告诉我们的是,此项目的开发历史。
我们还可以用 --graph 选项,查看历史中什么时候出现了分支、合并。以下为相同的命令,开启了拓扑图选项:
* d5e9fc2 (HEAD -> master) Merge branch 'change_site'
|\
| * 7774248 (change_site) changed the runoob.php
* | c68142b 修改代码
|/
* c1501a2 removed test.txt、add runoob.php
* 3e92c19 add test.txt
* 3b58100 第一次版本提交
现在我们可以更清楚明了地看到何时工作分叉、又何时归并。
你也可以用 --reverse 参数来逆向显示所有日志。
$ git log --reverse --oneline
3b58100 第一次版本提交
3e92c19 add test.txt
c1501a2 removed test.txt、add runoob.php
7774248 (change_site) changed the runoob.php
c68142b 修改代码
d5e9fc2 (HEAD -> master) Merge branch 'change_site'
如果只想查找指定用户的提交日志可以使用命令:git log --author
, 例如,比方说我们要找 Git 源码中 Linus 提交的部分:
$ git log --author=Linus --oneline -5
81b50f3 Move 'builtin-*' into a 'builtin/' subdirectory
3bb7256 make "index-pack" a built-in
377d027 make "git pack-redundant" a built-in
b532581 make "git unpack-file" a built-in
112dd51 make "mktag" a built-in
如果你要指定日期,可以执行几个选项:–since 和 --before,但是你也可以用 --until 和 --after。
例如,如果我要看 Git 项目中三周前且在四月十八日之后的所有提交,我可以执行这个(我还用了 --no-merges 选项以隐藏合并提交):
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
5469e2d Git 1.7.1-rc2
d43427d Documentation/remote-helpers: Fix typos and improve language
272a36b Fixup: Second argument may be any arbitrary string
b6c8d2d Documentation/remote-helpers: Add invocation section
5ce4f4e Documentation/urls: Rewrite to accomodate transport::address
00b84e9 Documentation/remote-helpers: Rewrite description
03aa87e Documentation: Describe other situations where -z affects git diff
77bc694 rebase-interactive: silence warning when no commits rewritten
636db2c t3301: add tests to use --format="%N"
更多 git log 命令可查看:http://git-scm.com/docs/git-log
如果要查看指定文件的修改记录可以使用git blame
命令,格式如下:
git blame <file>
git blame
命令是以列表形式显示修改记录,如下实例:
$ git blame README
^d2097aa (tianqixin 2020-08-25 14:59:25 +0800 1) # Runoob Git 测试
db9315b0 (runoob 2020-08-25 16:00:23 +0800 2) # 阿天
剩余部分有待补充