一、创建和初始化本地库

1.创建文件夹(例:E:\testGit)

2.打开Git Bash(Git终端)

小贴士:按住ctrl键使用+或-去放大终端上的字体大小(固定设置字体大小:鼠标右键–》Options–》Text–》Select–》选择字号–》Apply–》Save)
小贴士:设置编码集 鼠标右键–》Options–》Text–》Characher set选择UTF-8–》Apply–》Save
验证Git是否安装完成(顺便查看下版本信息):git –version
基本命令(与Linux上操作一样):
clear 清屏

3.设置签名

设置用户名和邮箱

1
$ git config --global user.name " 你的用户名"
1
$ git config --global user.email "你的邮箱"

4.本地仓库的初始化操作

使用命令进入到你创建的文件夹内(例:E:\testGit)

1
$ cd e:
1
$ cd testGit

或者在资源管理器中创建的文件夹内鼠标右键,打开Git Bash
初始化命令

1
$ git init

5.查看目录命令

1
$ ll -la  //查看包括隐藏的文件,.git文件是隐藏文件(windows查看隐藏文件)

小贴士: config 配置文件

二、提交文件

add和commit命令,提交文件到暂存区和本地库(这样才能对文件进行后续管理)

1. 在本地仓库文件夹中创建一个文件 (例:test.txt)

2. 将文件提交到暂存区

先打开Git Bash终端输入命令:

1
$ git add "Demo1.txt" 

3. 将暂存区文件提交到本地库

打开Git Bash终端输入命令:

1
$ git commit -m "这是我提交的第一个文件" "Demo1.txt" 
1
$ git commit -m "第一次提交文件" "Demo1.txt"

小贴士: 参数:m:message “”中的是注释,方便以后管理
小贴士: 提交文件时可不用双引号把文件名括起来

自己练习一下!

三、查看缓冲区和本地库状态的命令:

1
$ git status

说明:
nothing to commit 说明暂存区是空的(在本地库中放入一个文件)

Untracked files: 没有进行文件追踪,说明存在在本地库文件夹中有尚未被提交到暂存区的文件(使用add命令将其添加到暂存区)

Changes to be committed: 文件可以被提交(使用commit命令,将文件提交到本地库)

0 insertions(+) ,0 deletions(-) 0行增加 ,0行删除
修改文件内容后,再次查看状态

modified 文件已经修改了(可将已经修改的重新提交到暂存区和本地库)

小贴士:在工作区(本地库文件夹)中还没有被提交到暂存区的状态:untrack
通过add命令提交到暂存区,就是将文件加入到index中,状态变为:staged
通过commit命令可以将staged状态的文件加入到本地库的HEAD中

四、查看日志

1
$ git log

commit eb5579cf745b6c68e6480f2fc19481bf9452f219 (HEAD -> master)

commit 后的十六进制代码 可以看成键值对的索引,就是<key,value>中的key,key:索引,value:历史记录中的具体内容。通过索引可以找到历史记录中的具体内容。
小贴士: 历史版本由近至远
小贴士: 当历史记录太多时,出现 ”:“进行分页,在”:“后通过空格回车可切换到下一页
小贴士:
下一页:空格
上一页:b
到尾页显示END
退出:q

日志展示方式

  • 以一种美观的方式,将其在一行上展示出来
    1
    $ git log --pretty=oneline
  • 显示一部分索引,将其在一行上展示出来
    $ git log --oneline
  • 显示指针回溯到相应的历史版本需要的步数
    1
    $ git reflog

    五、前进、后退历史版本的命令

    1
    $ git reset --hard  【你所要跳到历史版本的索引】// 就是前面说的很长的一窜十六进制的数
    小贴士:是指针名
    小贴士:复制,在终端选中就是复制。粘贴,右键鼠标点击past。
    小贴士:使用hard参数回溯历史版本时,本地库和暂存区已经本地存储的文件同步更改。
    本地库(HEAD)的指针移动时,重置暂存区(index)、重置工作区(一开始初始化创建的文件夹)
    1
    $ git reset --mixed 【索引】
    本地库(HEAD)指针移动的同时,重置暂存区(index),但是工作区(初始化时的文件夹)不动
    小贴士:mixed参数不常用
    1
    $ git reset --soft 【索引】
    本地库(HEAD)指针移动的时候,暂存区(index)和工作区(初始化的文件夹)都不动
    小贴士:参数不常用

    六、删除操作

    删除工作区中的文件
    1
    $ rm 【文件名】
    将删除操作同步到暂存区
    1
    $ git add 【文件名】
    将删除操作同步到本地库
    1
    $ git commit 【文件名】
    小贴士: 该删除不是物理删除,只是改变了指针指向
    找回本地库中删除的文件
    1
    $ git reset --hard 【索引】
    实际上就是将历史版本切换到添加文件时的版本
    找回暂存区的文件
    1
    $ git reset --hard 【索引】

    七、文件对比差异

1.在工作区创建一个文件(例:TEST.txt),将其提交的暂存区和本地库中

2.更改工作区内的文件(TEST.txt),增加文件内容,导致工作区和暂存区文件不同步

小贴士:Git是以行为单位进行管理
将工作区和暂存区文件进行比较的命令:

1
$ git  diff 【文件名】

多个文件的比对命令:

1
$ git diff // 比较工作区和暂存区中所有文件的差异

比较暂存区和本地库的差异

1
$ git diff HEAD 【文件名】 // 比较暂存区和当前本地库中该文件的差异
1
$ git diff HEAD 【索引号】【文件名 】// 比较暂存区和历史本地库中该文件的差异

八、查看、创建、切换分支

概念
branch master主分支
branch分支
新的独立的功能,开辟新的分支branch,从master主分支上复制当前最新的版本到分支上。
小贴士:多个分支可以并行开发,各个分支互不影响
分支的合并
hot_fix 热修复(分支合并出现bug后新开辟的分支)

操作

  • 查看当前版本下的所有分支
    1
    $ git branch -v 
  • 创建分支
    1
    $ git branch 【分支名】
    小贴士::分支名前面的*表示当前所在的分支
  • 切换分支
    1
    $ git checkout 【分支名】
    小贴士:创建的新分支和当前主分支上最新版本索引号相同

查看文件内容命令:

$ cat 【文件名】

九、合并分支

将其他分支合并到主分支

  • 切换到主分支
    1
    $ git checkout master
  • 将分支合并到主分支
    1
    $ git merge 【分支名】
    小贴士:master|MERGING代表储在合并状态中

Merge conflict in 文件名 代表出现冲突
出现冲突的原因:在同一个文件的同一个位置修改
保留下需要的,进行修改后
将工作区中的内容添加到暂存区
进行commit操作

1
$ git commit -m "解决了冲突问题" Demo1.txt

小贴士:不能带文件名,否则出错

十、为仓库地址起别名(testRepository)

1
$ git remote -v 查看远程库的别名
1
$ git remote add 别名 Github仓库的地址

小贴士:fetch可以从仓库取回东西,push可以推送东西

十一、推送命令:

1
$ git push 【别名】 master【要推送的分支名】

十二、克隆

选取下载到的盘符(下载到地址)
拉取命令:

1
$ git clone 远程库的地址

克隆操作可以帮我们完成

  • 初始化本地库
  • 将远程库内容完整克隆到本地库别名

    十三、邀请加入团队

使用push命令没有让输入密码也没有报错,push成功的原因是Git bash里有缓存
删除缓存:搜索管理你的凭据
邀请加入团队
进入远程库后点击Settings在Manage access里邀请普通成员
输入邀请人的github账户名
Pending Invite就是邀请连接
接受邀请输入,邀请连接

十四、远程库的修改和拉取操作

1.拉取pull操作的命令:相当于fetch+merge

2.项目经理先确定远程库内容是否更新了

3.项目经理进行拉取操作:

抓取操作

1
$ git fetch 【远程库别名或远程库地址】【分支名】

抓取后切换到远程库中的内容是否正确

1
$ git checkout 【远程仓库别名】/【分支名】

ll 查看目录
cat 【文件名】查看文件内容

发现内容都正确,进行合并操作
切换回本地库的主分支

1
$ git checkout master

合并分支

1
$ git merge 【远程库别名】/【分支名】

小贴士:fetch操作只是将远程仓库里的东西下载到本地,并没有更新到工作区,工作区文件不变

直接pull拉取
远程库已经更新后

1
$ git pull 【远程仓库别名】【分支名】

小贴士:fetch+merge 为了保险,pull代码简单

十五、跨团队合作

1.得到远程库的地址

2.fork操作

复制地址,点击fork操作

3.克隆到本地,进行修改

1
$ git clone 【地址】

4.添加到暂存区,提交到本地库,推送到远程库

5.进行pull request操作

点击Pull requests

6.审核

查看请求点击pull requests
Files changed 可以查看具体提交的内容
点击Merge pull request 进行合并

十六、跨团队合作

1.得到远程库的地址

2.fork操作

复制地址,点击fork操作

3.克隆到本地,进行修改

1
$ git clone 【地址】

4.添加到暂存区,提交到本地库,推送到远程库

5.进行pull request操作

点击Pull requests

6.审核

查看请求点击pull requests
Files changed 可以查看具体提交的内容
点击Merge pull request 进行合并

十七、SSH免密登录

(如果操作系统不是windows10)push每次需要输入账户和密码
免密操作

1.进入到用户的主目录中的命令:

1
$ cd ~

2.执行命令生成一个.ssh的目录

1
$ ssh-keygen -t rsa -C 【github对应的账户】

三次确认回车,使用默认设置
小贴士: C要大写
在.ssh目录下有两个文件id_rsa和id_rsa.pub,打开id_rsa.pub文件,将里面的内容进行复制操作

3.打开github 在头像位置找到Settings –》SSH and GPG keys –》创建型的SSH keys,将复制的内容粘贴到key中

4.生成密钥以后就可以正常进行push操作

5.添加别名的命令

1
$ git remote add 【别名】 【远程库SSH协议下的地址】

十八、IDEA集成Git

创建project后,打开File点击Settings选择Git,设置git的安装路径
Path to Git executable:D:\study_setup\Git\bin\git.exe
Apply –》OK

1.本地库的初始化操作

VCS选择Import into Version Control选择Create Git Repository
本地库初始化完成,生成了.git文件

2.在创建好的project中创建New Modul创建Package创建Class然后进行Java代码的书写

3.在git中add添加到暂存区点击commit提交到本地库(可添加注释)Version control相当终端 Log日志

十九、使用idea拉取推送资源

拉取

1
$ git pull 【别名】 【分支名】--allow-unrelated-histories

允许无联系的版本合并
小贴士:不同本地库需要再次设置别名
推送

1
$ git push -u 【别名】【分支名】-f

远程库和本地库已经可以进行交互了
直接commit和push(不推荐)
为了防止冲突,一般都是先pull后push

二十、使用idea克隆远程仓库到本地

利用IDEA进行克隆项目
new–》 Progect from Version Control–》Git
URL:远程库地址
Directory:放置位置
Test测试与远程库是否能连接上
Open Project 选择New Window选择在新窗口打开
小贴士:克隆到本地后,这个目录即变成了一个本地仓库又变成了工作区间

二十一、使用idea解决冲突

1.制造冲突

2.A和B对同一个文件的同一个位置进行修改

3.解决冲突

出现冲突后,提示进行merge操作,点击merge进行合并(可选择合并的内容)

4.避免冲突

团队开发时避免在一个文件中改代码
在修改一个文件之前,在push之前先pull操作,在别人的基础上进行修改