地址https://www.bilibili.com/video/BV1MU4y1Y7h5?p=10&vd_source=5c54c277c335c4300264a04e16624e81
一、下载、安装和配置用户信息
下载地址: https://git-scm.com/download
安装成功后,右击桌面会出现有关Git的选项,如下:

Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用
该用户信息
//这个是配置git的用户信息,修改用户信息也是使用这个命令
git config --global “ckren”
git config --global user.email “123@.com”
//查看配置信息
git config --global
git config --global user.email二、Git的常用命令
1、获取本地仓库(git init)
创建一个文件夹,并进入,右击选择Git Bash选项,输入git init,创建成功会提示,如下;

2、 git add (工作区 --> 暂存区)
3、git commit (暂存区 --> 本地仓库)



4、git status
查看的修改的状态(暂存区、工作区)
在widget.cpp添加一个打印,使用git status命令查看状态,


5、查看提交记录 git log
命令形式:git log [option]
options
–all 显示所有分支
–pretty=oneline 将提交信息显示为一行
–abbrev-commit 使得输出的commitId更简短
–graph 以图的形式显示

下面是有选项的git log

如上图:master一般是主干,HEAD一般是当前可操作的版本。
选项这么长,为了不让每次都输入这么长的指令,可以给指令起别名。
创建一个文件写入要起别名的指令保存即可。
起别名的格式如下:

alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
注:如果保存文件后输入git-log出现没有该指令的错误:
source ~/.bashrc //其中.bashrc是你创建的文件解决中文乱码问题:

6、回退版本(git reset --hard commitID)


回退后代码刚好是添加了变量a的时候的
由于回退到上一个版本了,打印变量a的版本的ID不见了,可以使用git reflog命令查看


三、分支
几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离
开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
1、查看本地分支
命令:git branch
2、创建本地分支
命令:git branch 分支名
3、*切换分支(checkout)
命令:git checkout 分支名
我们还可以直接切换到一个不存在的分支(创建并切换)
命令:git checkout -b 分支名
4、*合并分支(merge)
一个分支上的提交可以合并到另一个分支
命令:git merge 分支名称
5、删除分支
不能删除当前分支,只能删除其他分支
git branch -d b1 删除分支时,需要做各种检查
git branch -D b1 不做任何检查,强制删除
xxxx MINGW64 /b/QtPractice/week01/gitTest01 (master)
$ git checkout dev
Switched to branch 'dev'
xxxx MINGW64 /b/QtPractice/week01/gitTest01 (dev)
$ git-log
* ccaef65 (master) 定义变量b
* faae6bd (HEAD -> dev) 打印变量a
* cf498f6 添加了变量a
xxxx MINGW64 xxxx/gitTest01 (dev)
$ git-log
* ccaef65 (master) 定义变量b
* faae6bd (HEAD -> dev) 打印变量a
* cf498f6 添加了变量a
xxxx MINGW64 xxxxgitTest01 (dev)
$ git add gitTest01.pro main.cpp widget.cpp widget.h widget.ui
xxxx MINGW64 xxxx/gitTest01 (dev)
$ git commit -m '定义变量b = 6'
[dev 78cd3c9] 定义变量b = 6
1 file changed, 1 insertion(+)
xxxx MINGW64 xxxx/gitTest01 (dev)
$ git-log
* 78cd3c9 (HEAD -> dev) 定义变量b = 6
| * ccaef65 (master) 定义变量b
|/
* faae6bd 打印变量a
* cf498f6 添加了变量a
xxxx MINGW64 xxxx/gitTest01 (dev)
$ git merge master dev
Auto-merging widget.cpp
CONFLICT (content): Merge conflict in widget.cpp
Automatic merge failed; fix conflicts and then commit the result.
xxxx MINGW64 xxxx/gitTest01 (dev|MERGING)
$
如上指令和图像,在master上定义一个变量b=2,然后切换到分支在让变量b=6,使用git merge合并分支的时候会提示冲突,这个时候就要自己修改啦。
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解
决冲突,解决冲突步骤如下:
- 处理文件中冲突的地方
- 将解决完冲突的文件加入暂存区(add)
- 提交到仓库(commit)
再使用git-log查看就可以看到合并的啦

命令如下:
5. clone(克隆): 从远程仓库中克隆代码到本地仓库
6. checkout (检出):从本地仓库中检出一个仓库分支然后进行修订
7. add(添加): 在提交前先将代码提交到暂存区
8. commit(提交): 提交到本地仓库。本地仓库中保存修改的各个历史版本
9. fetch (抓取) : 从远程库,抓取到本地仓库,不进行任何的合并动作,一般操作比较少。
10. pull (拉取) : 从远程库拉到本地库,自动进行合并(merge),然后放到到工作区,相当于fetch+merge
11. push(推送) : 修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
















