一,基本概念

1.简介

Git是目前世界上最先进的分布式版本控制系统

git是林大神开发的。

2.git的作用

python git本地仓库 git本地仓库的作用_java

3.git的工作机制

工作区 git add 文件 暂存区 git commit 本地版本库

4.仓库的概念

本地仓库:是在开发人员自己电脑上的Git仓库。

远程仓库:是在远程服务器的Git仓库。

好处:跨团队协作

团队内协作

操作

clone:克隆,就是将远程仓库复制到本地

push:推送,就是将本地仓库代码上传到远程仓库

`pull`:拉取,就是将远程仓库代码下载到本地仓库

	`Commit`:提交,就是将本地工作区代码上传到本地仓库中

优点

容灾能力强

本地版本管理

异地协作

灵活分支

二,安装与配置

1.安装

python git本地仓库 git本地仓库的作用_暂存区_02


其他的全都无脑下一步就可以。

选择Git命令执行环境

python git本地仓库 git本地仓库的作用_java_03


第一种是不和windows的dos窗口混合在一起。Configuring the line ending conversions

python git本地仓库 git本地仓库的作用_暂存区_04


第一个选项:如果是跨平台项目,在windows系统安装

第二个选项:如果是跨平台项目,在Unix系统安装

第三个选项:非跨平台项目

python git本地仓库 git本地仓库的作用_git_05


python git本地仓库 git本地仓库的作用_github_06


新功能,不稳定,不勾选。

2.配置

1.整一个Git的工作空间

在任意的文件目录下,右键都可以开打Git的命令行窗口——Git Bash Here

2.设置用户名和用户邮箱
git config --global user.name "用户名"
git config --global user.email "用户邮箱"

--global 表示全局属性,所有的git项目都会共用属性

查看配置信息:git config --list

在当前登录的系统用户路径下,生成~/.gitconfig隐含文件,里面可以看到刚刚设置的信息。如果不用命令设置,也可以直接打开文件进行设置。

3.相关概念

工作区:包含.git的目录

版本库:.git目录

暂存区:.git/index

分支: Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

python git本地仓库 git本地仓库的作用_github_07


4.提交git版本库

1.提交缓存区

git add 文件名

2.提交版本库

git commit

需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。一旦提交完后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的。即:nothing to commit (working directory clean)。因为在缓存区没有版本的概念,但是提交到本地版本库就有了版本的概念。
3.其他操作

①用git diff HEAD -- filename命令可以查看工作区和暂存区里面最新版本的区别。

②新建过撤销未add: git checkout -- 文件名

③撤销已add未commit:先git reset HEAD 文件名,再 git checkout -- 文件名

④撤销已add已commit:git reset --hard HEAD^

三,git实战

命令名称

命令作用

git init

初始化本地库

git config --global user.name 用户名

设置用户签名的用户名部分

git config --global user.email 邮箱

设置用户签名的邮箱部分

git status

查看本地库状态

git add 文件名

添加到暂存区

git commit -m “日志信息” 文件名

提交到本地库

git reflog

查看历史记录

git reset --hard 版本号

版本穿梭

基本操作

#初始化git工作目录
git init #创建一个文件
vim a.txt #存入本地暂存区
git add a.txt #存入本地版本库
git commit #对a.txt文件进行修改
vim a.txt #对修改后的a.txt重新存入暂存区
git add a.txt #对修改后的a.txt重新放入本地版本库
git commit #查看修改历史
git log #查看文件状态
git status #查看文件状态并格式化
git status -s #撤销暂存区的文件
git reset a.txt #提交并直接加上注释内容
git commit -m "注释内容"


说明

git status

On branch master:表示主分支

Untracked files:表示未跟踪状态

Git工作目录下的文件状态信息:

Untracked 未跟踪(未被纳入版本控制)

Tracked 已跟踪(被纳入版本控制)

Unmodified 未修改状态

Modified 已修改状态

Staged 已暂存状态

这些文件的状态会随着我们执行Git的命令发生变化

红色表示新建文件或者新修改的文件,都在工作区.

绿色表示文件在暂存区

新建的文件在工作区,需要添加到暂存区并提交到仓库区

也可以使用git status –s 使输出信息更加简洁

?? : 表示未跟踪状态


查看日志

git log

git log a.txt 查看文件日志

git log --pretty=online 一行显示

git reflog 查看历史操作


回退

git reset --hard HEAD

一次回退一个版本,一个^代表一个版本数量

git reset --hard HEAD~n

回退n个版本


版本穿梭

git reflog a.txt

查看历史操作

git reset --hard 版本号

回到最新版本


撤销

未add,未commit

vim修改文件,没有add和commit,进行撤销

命令

git checkout -- a.txt

撤销修改(还原原来的文件)

已add,未commit

vim修改文件,添加add,但没提交commit,进行撤销

命令

git add a.txt

`git reset`

删除

① 手动拷贝图片java.jpg到工作空间目录,并查看目录列表:ls -l

② 添加:git add java.jpg

③ 提交:git commit -m "新建图片" java.jpg

④ 删除图片:rm java.jpg

⑤ 添加:git add java.jpg

⑥ 提交:git commit -m "新建图片" java.jpg

⑦ 回退:git reset --hard HEAD^

⑧ 文件不是被删除了吗?怎么又回来啦!呵呵…

⑨ 处处留痕:git reflog

python git本地仓库 git本地仓库的作用_java_08

分支

1.分支概念

在使用版本控制工具开发的过程中,同时推进多个任务


2.分支的好处

同时并行推进多个功能开发,提高开发效率

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

3.分支操作

命令名称

作用

git branch 分支名

创建分支

git branch -v

查看分支

git checkout 分支名

切换分支

git merge 分支名

把指定的分支合并到当前分支上

4.创建分支和切换分支图解

master、hotfix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。

HEAD如果指向master,那么我们现在就在master分支上。

HEAD如果指向hotfix,那么我们现在就在hotfix分支上。

所以切换分支的本质就是移动HEAD指针

python git本地仓库 git本地仓库的作用_python git本地仓库_09

5.在两个不同分支分别做不同修改并合并到主分支图解

python git本地仓库 git本地仓库的作用_java_10


python git本地仓库 git本地仓库的作用_java_11


python git本地仓库 git本地仓库的作用_git_12


合并分支时一定是涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”。

所以分支合并命令的本质就是把“目标分支”合并到“当前分支”。

版本冲突

如上图所示,我们的分支合并的时候产生了冲突。

1.冲突产生的原因

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。

2.冲突的解决

编辑有冲突的文件,删除特殊符号,决定要使用的内容

添加到暂存区

执行提交(注意:使用git commit命令时不能带文件名)

3.避免冲突

养成良好的操作习惯,先pull在修改,修改完立即commitpush

一定要确保自己正在修改的文件是最新版本的

各自开发各自的模块

如果要修改公共文件,一定要先确认有没有人正在修改

下班前一定要提交代码,上班第一件事拉取最新代码

一定不要擅自修改同事的代码


四,github远程库实战

目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。

python git本地仓库 git本地仓库的作用_python git本地仓库_13


项目的发起者记得邀请一个项目的合作者来协同开发收到邮件以后点击进入,然后就可以协同开发。

python git本地仓库 git本地仓库的作用_java_14

配置git忽略文件

位置:用户家目录下

1.创建忽略规则文件

git.ignore

# Compiled class file
*.class
 
# Log file
*.log
 
# BlueJ files
*.ctxt
 
# Mobile Tools for Java (J2ME)
.mtj.tmp/
 
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
 
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
 
.classpath
.project
.settings
target
.idea
*.iml
2.在.gitconfig文件中引用忽略规则文件
[user]
	name = root
	email = 1972039773@qq.com
[core]
excludesfile = C:\Users\Administrator\git.ignore

IDEA集成git

1.配置idea的git

python git本地仓库 git本地仓库的作用_暂存区_15

2.初始化本地仓库

python git本地仓库 git本地仓库的作用_git_16

3.添加到暂存区

python git本地仓库 git本地仓库的作用_暂存区_17

4.提交到本地仓库

python git本地仓库 git本地仓库的作用_git_18

5.创建分支

python git本地仓库 git本地仓库的作用_git_19

6.切换分支

python git本地仓库 git本地仓库的作用_github_20

7.合并分支

python git本地仓库 git本地仓库的作用_git_21

8.解决冲突
1.冲突的产生

仍然是同一个文件在同一个位置有不同内容。

2.合并分支
3.看到冲突提示

python git本地仓库 git本地仓库的作用_暂存区_22


这里可以直接点Accept Yours或者Accept Theirs来解决冲突。这代表完全使用我们的内容或完全使用他们的内容。

如果我们想要详细修改冲突内容则点击Close。此时IDEA会提示Resolve

4.点击resolve

python git本地仓库 git本地仓库的作用_github_23


python git本地仓库 git本地仓库的作用_git_24


python git本地仓库 git本地仓库的作用_git_25


然后提交本地库就好了。

在IDEA中集成github

1.保存github账号

python git本地仓库 git本地仓库的作用_git_26

2.分享到github

python git本地仓库 git本地仓库的作用_java_27

3.克隆

python git本地仓库 git本地仓库的作用_git_28


python git本地仓库 git本地仓库的作用_java_29

4.push

python git本地仓库 git本地仓库的作用_github_30

5.pull

python git本地仓库 git本地仓库的作用_python git本地仓库_31


python git本地仓库 git本地仓库的作用_暂存区_32


git推送马云

#git本地库关联马云 
 git remote ADD origin https://gitee.com/yin_huidong/java_learning_notes.git
#git 将本地版本库推送到远程库
 git push https://gitee.com/yin_huidong/java_learning_notes.git MASTER

五,git项目实战

1.gitLab配置ssh

1.本地生成ssh公钥

本机执行如下git命令:

ssh-keygen -t rsa -C "1972039773@qq.com"

执行以后,在本机当前用户的家目录下会生成.ssh文件夹

python git本地仓库 git本地仓库的作用_github_33

2.复制里面的公钥,并登录gitlab(这里以码云为例)

python git本地仓库 git本地仓库的作用_python git本地仓库_34


python git本地仓库 git本地仓库的作用_github_35

2.从远程库拉取代码到本地

python git本地仓库 git本地仓库的作用_github_36


python git本地仓库 git本地仓库的作用_暂存区_37

3.创建自己的开发分支

python git本地仓库 git本地仓库的作用_github_38


python git本地仓库 git本地仓库的作用_git_39


此时就已经切换到了你创建好的dev分支。

4.在dev分支编码后并提交到远程库

python git本地仓库 git本地仓库的作用_暂存区_40


python git本地仓库 git本地仓库的作用_github_41

5.将dev分支的代码合并到主分支

python git本地仓库 git本地仓库的作用_暂存区_42


python git本地仓库 git本地仓库的作用_git_43