1 Git概述

从个人开发过渡到团队协作需求:版本控制

image-20220227173728427

版本控制工具:

集中式版本控制工具: CVS、SVN(Subversion)、VSS……

分布式版本控制工具: Git、Mercurial、Bazaar、Darcs……

Git工作机制:

image-20220227174113733

git的版本控制都是在本地库里做的–>分布式版本控制工具

代码托管中心: 局域网:GitLab / 外 网:Github.码云

2 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 版本号版本穿梭

2.1 初始化本地库

语法: git init

实操:

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo
$ git init
Initialized empty Git repository in F:/Git-Space/git-demo/.git/

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ ll -a
total 4
drwxr-xr-x 1 Administrator 197121 0 Feb 27 18:05 ./
drwxr-xr-x 1 Administrator 197121 0 Feb 27 18:00 ../
drwxr-xr-x 1 Administrator 197121 0 Feb 27 18:05 .git/(初始化结果,生成.git文件夹)

2.2 设置用户签名

语法:

git config --global user.name 用户名

git config --global user.email 邮箱

实操:全局范围签名

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git config --global user.name zxk

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git config --global user.email zxk.com

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ cat ~/.gitconfig//家目录下生成签名文件

[user]
        name = zxk
        email = zxk.com

说明:

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。

※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系

2.3 查看本地库状态

语法: git status

实操:

2.3.1 工作区无文件

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

2.3.2 检测到未追踪文件

新建文件–>查看状态

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ vim hello.txt//工作区创建文件

    hello zxk!hello git!//文件内容

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git status
On branch master

No commits yet

Untracked files://检测到未追踪文件
  (use "git add <file>..." to include in what will be committed)
        hello.txt//红色显示

nothing added to commit but untracked files present (use "git add" to track)

2.3.3 检测到有新建的文件添加到了暂存区

添加暂存区–>查看状态(提示可从暂存区删除)

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git add hello.txt//添加到暂存区
warning: LF will be replaced by CRLF in hello.txt.//自动转换行末换行符
The file will have its original line endings in your working directory

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git status
On branch master

No commits yet

Changes to be committed:
//系统提示:可执行删除,但保留工作区文件-->回到有文件未追踪状态
  (use "git rm --cached <file>..." to unstage)
        new file:   hello.txt//由红到绿:文件被追踪到

2.3.4 提交完成后查看状态

提交本地库–>查看状态

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git commit -m "master first commit" hello.txt//提交本地库
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
[master (root-commit) da853d2] master first commit
 1 file changed, 1 insertion(+)//增加一行变更的内容
 create mode 100644 hello.txt

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git status
On branch master//注意No commits yet 没有了
nothing to commit, working tree clean

说明:

被追踪过的文件(即添加过暂存库后来又修改过的),也可以从工作区直接添加到本地库,但没法删了,会有版本日志

2.3.5 工作区的文件有修改

修改文件–>查看状态–>提交本地库–>查看状态

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ vim hello.txt
    hello zxk!hello git!
	modify//新增修改

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   hello.txt//红色提示:修改未被追踪

no changes added to commit (use "git add" and/or "git commit -a")//提示可以添加/提交
            
Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git commit -m "second modify commit" hello.txt//提交本地库
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in hello.txt.
The file will have its original line endings in your working directory
[master 1ae8dd0] second modify commit
 1 file changed, 1 insertion(+)//修改内容:增加一行

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git status//查看状态
On branch master
nothing to commit, working tree clean

说明:本地库若检测到修改一行会显示:先删后加一行

2.4 历史版本

2.4.1 查看历史版本

语法:

git reflog (精简版查看) / git log (详细查看)

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git reflog//简略查看
1ae8dd0 (HEAD -> master) HEAD@{0}: commit: second modify commit
da853d2 HEAD@{1}: commit (initial): master first commit

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git log//详细查看
commit 1ae8dd03992d52531d67128a895624b29eefe1c9 (HEAD -> master)
Author: zxk <zxk.com>
Date:   Sun Feb 27 18:51:11 2022 +0800

    second modify commit

commit da853d21478dbad5c49ec1163a461e1ced94b30b
Author: zxk <zxk.com>
Date:   Sun Feb 27 18:37:42 2022 +0800

    master first commit

说明:

git reflog 查看引用日志信息(精简版本号7位)

git log查看详细日志信息(看到版本,提交者,完整版本号)

2.4.2 版本穿梭

语法: git reset --hard 版本号

实操:

--首先查看当前的历史记录,可以看到当前是在1ae8dd0这个版本
Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git reflog
1ae8dd0 (HEAD -> master) HEAD@{0}: commit: second modify commit
da853d2 HEAD@{1}: commit (initial): master first commit

--切换到da853d2版本,也就是我们第一次提交的版本
Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git reset --hard da853d2
HEAD is now at da853d2 master first commit

--切换完毕之后再查看历史记录,当前成功切换到了da853d2版本
Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git reflog
da853d2 (HEAD -> master) HEAD@{0}: reset: moving to da853d2
1ae8dd0 HEAD@{1}: commit: second modify commit
da853d2 (HEAD -> master) HEAD@{2}: commit (initial): master first commit

说明:

  1. 版本穿梭,底层其实是移动HEAD指针

  2. 本地库内存里记录的日志和版本信息,调用指针指向不同版本head->master->版本

  3. 版本穿梭具体操作内容:增加版本穿越日志,head指针偏移,文件内容改变

  4. 如何查看当前指针指向:

    工作区以git-demo为例–>git-demo/.git/HEAD查看head指向得分支(此时指向master)–>git-demo/.git/refs/heads/master查看该分支当前指向得的版本号

image-20220227191305563

image-20220227191327376

3 分支操作

分支:在版本控制过程中,同时推进多个任务

image-20220227194054090

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

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

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

3.1 查看分支

语法: git branch -v

实操:

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git branch -v
* master da853d2 master first commit(*代表当前所在的分支)

3.2 创建分支

语法: git branch 分支名

实操:

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git branch hot-fix

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git branch -v
  hot-fix da853d2 master first commit//(刚创建的新的分支,并将主分支master的内容复制了一份)
* master  da853d2 master first commit

3.3 切换分支

语法: git checkout 分支名

实操:

先修改master分支的内容并提交–>切换hot-fix分支

结论:master分支的文件内容被修改后提交本地库不会影响hot-fix分支文件的内容

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ cat hello.txt//新增一行文件内容
hello zxk!hello git!
hello master branch!

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git add hello.txt//添加暂存区

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git commit -m "third commit" hello.txt//提交本地库
[master 68f5fe2] third commit
 1 file changed, 1 insertion(+)

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git checkout hot-fix//切换hot-fix分支
Switched to branch 'hot-fix'

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (hot-fix)
$ cat hello.txt
hello zxk!hello git!//文件内容仍为创建该分支时的内容

3.4 合并分支

语法: git merge 分支名

实操:(以冲突合并为例)

正常合并为:将高于该分支版本的其他分支合并到该分支,会提升当前分支的版本.

而本例中:master分支的版本已经在hot-fix的之上了,此时修改hot-fix分支文件并提交,即提升hot-fix分支的版本,会发生冲突合并:

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (hot-fix)
$ cat hello.txt//修改文件后查看内容
hello zxk!hello git!
hello hot-fix branch!//添加了一行内容

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (hot-fix)
$ git commit -m "hot-fix first commit" hello.txt//提交本地库
[hot-fix 3bf4dba] hot-fix first commit
 1 file changed, 1 insertion(+)

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (hot-fix)
$ git checkout master//切回master分支
Switched to branch 'master'

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git merge hot-fix//在master分支上合并热修分支
Auto-merging hello.txt
CONFLICT (content): Merge conflict in hello.txt//合并冲突
Automatic merge failed; fix conflicts and then commit the result.

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master|MERGING)//看到分支冲突
$

手动解决:

手动修改内容冲突的文件–>添加暂存区–>提交本地库(不可加文件名)

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master|MERGING)
$ vim hello.txt//手动修改

hello zxk!hello git!
<<<<<<< HEAD//删除该行
hello master branch!
=======//删除该行
hello hot-fix branch!
>>>>>>> hot-fix//删除该行

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master|MERGING)
$ cat hello.txt//修改后查看
hello zxk!hello git!
hello master branch!
hello hot-fix branch!

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master|MERGING)
$ git commit -m "merge commit"//不能直接提交本地库,只能先添加暂存区
error: Committing is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
U       hello.txt

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master|MERGING)
$ git add hello.txt//添加暂存区

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master|MERGING)
$ git commit -m "merge commit"//提交不带文件名
[master 80561d8] merge commit

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)//分支显示正常

总结:

冲突产生的原因:

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

冲突的解决:

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

2)添加到暂存区

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

3.5 分支图解

  1. 创建分支

    image-20220227201921173

image-20220227202047328

  1. 切换分支

image-20220227202102753

说明:

master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。

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

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

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

5 GitHub操作

GitHub网址:https://github.com/

5.1 创建远程仓库

image-20220227203738032

image-20220227204047567

5.2 远程仓库操作

命令名称作用
git remote -v查看当前所有远程地址别名
git remote add 别名 远程地址起别名
git push推送本地分支上的内容到远程仓库
git clone将远程仓库的内容克隆到本地
git pull将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并

5.2.1 创建远程库别名

语法:

git remote -v (查看当前所有远程地址别名)

git remote add 别名 远程地址 (起名)

实操:(先获取远程库的连接)

image-20220227204640053

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git remote -v

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git remote add git-demo-remote https://github.com/boneJson/git-demo.git

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git remote -v
git-demo-remote https://github.com/boneJson/git-demo.git (fetch)
git-demo-remote https://github.com/boneJson/git-demo.git (push)

5.2.2 推送

语法: git push 别名 分支 (推送本地分支上的内容到远程仓库)

注意:每次push代码的时候尽量先pull一下,防止push失败,因为本地库和远程库状态可能不对。

实操:

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git push git-demo-remote master//推送
//自动弹出登录网页

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ fatal: User canceled device code authentication
git push git-demo-remote master
Enumerating objects: 12, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 4 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (12/12), 947 bytes | 947.00 KiB/s, done.
Total 12 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/boneJson/git-demo.git
 * [new branch]      master -> master//成功推送分支

image-20220227210315596

可以看到:master分支(内含4个版本)已经推送到远程库

5.2.3 拉取

准备工作:

在github上修改master分支的文件内容:

image-20220227211749056

image-20220227211808782

可以看到远程库里该文件新增了第四行内容

拉取语法: git pull 远程库地址别名 远程分支名

实操:

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ git pull git-demo-remote master//拉取
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 684 bytes | 2.00 KiB/s, done.
From https://github.com/boneJson/git-demo
 * branch            master     -> FETCH_HEAD
   80561d8..514e959  master     -> git-demo-remote/master
Updating 80561d8..514e959
Fast-forward
 hello.txt | 1 +
 1 file changed, 1 insertion(+)

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-Space/git-demo (master)
$ cat hello.txt
hello zxk!hello git!
hello master branch!
hello hot-fix branch!
hello remote new content!//自动同步

说明:拉取动作自动提交修改到本地库–>本地库和远程库同步

5.2.4 克隆

语法: git clone 远程地址 (将远程仓库的内容克隆到本地)

实操:

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-lhc
$ git clone https://github.com/boneJson/git-demo.git
Cloning into 'git-demo'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 15 (delta 1), reused 11 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (1/1), done.

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-lhc
$ cd git-demo/

Administrator@WIN-I0Q1644D4PA MINGW64 /f/Git-lhc/git-demo (master)
$ git remote -v//发现远程库自动取了别名
origin  https://github.com/boneJson/git-demo.git (fetch)
origin  https://github.com/boneJson/git-demo.git (push)

说明:

克隆不需要用户登录–>拿到远程库网站连接,git clone 连接–>克隆(拉取代码–>初始化本地库–>创建远程库别名)

6 团队内协作

image-20220227215414769

  1. 选择邀请合作者

image-20220227214127575

  1. 填入想要合作的人

image-20220227214202176

  1. 复制地址并通过微信钉钉等方式发送给该用户,复制内容如下:

image-20220227214248604

  1. 受邀请者在这个账号中的地址栏粘贴收到邀请的链接,点击接受邀请。

image-20220227214434690

  1. 成功之后可以在受邀请者账号上看到git-demo的远程仓库。

image-20220227215231440

  1. 受邀请者可以修改内容并push到远程仓库:

    本地库修改,添加,提交,推送(没被邀请成为远程库成员,推送会被拒绝)

  2. 回到发帖人的GitHub远程仓库中可以看到,最后一次是受邀请者提交的

7 跨团队协作

image-20220227215437392

  1. 将远程仓库的地址复制发给邀请跨团队协作的人,比如东方不败。
  2. 在东方不败的GitHub账号里的地址栏复制收到的链接,然后点击Fork将项目叉到自己的本地仓库。

image-20220227215601629

叉成功后可以看到当前仓库信息。

image-20220227215635037

  1. 东方不败就可以在线编辑叉取过来的文件。编辑完毕后提交

    如果是克隆到本地的话,就要将修改先推给远程库

  2. 接下来点击上方的Pull请求,并创建一个新的请求。

image-20220227215842455

image-20220227215846363

image-20220227215904243

  1. 回到岳岳GitHub账号可以看到有一个Pull request请求。

image-20220227215933984

image-20220227215937068

进入到聊天室,可以讨论代码相关内容。。。

image-20220227220001379

image-20220227220008623

  1. 如果代码没有问题,可以点击Merge pull reque合并代码。

image-20220227220046236

image-20220227220050832

8 免密登录

Administrator@WIN-I0Q1644D4PA MINGW64 ~
$ rm -rvf .ssh//删除家目录下该目录.ssh目录
removed '.ssh/id_rsa'
removed '.ssh/id_rsa.pub'
removed '.ssh/known_hosts'
removed '.ssh/known_hosts.old'
removed directory '.ssh'

Administrator@WIN-I0Q1644D4PA MINGW64 ~
$ ssh-keygen -t rsa -C 2642566@qq.com//运行命令生成.ssh秘钥目录[注意:这里-C这个参数是大写的C],注册github的邮箱
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa)://出提示连按三下回车
Created directory '/c/Users/Administrator/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa
Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:uwbs5jaQ6eJYEY2MRBOG3Dnw9r7pIKzh9BZK/kLbV7U 2642566@qq.com
The key's randomart image is:
+---[RSA 3072]----+
|+B+ .            |
|++o*             |
|. +oo            |
|  ...    .       |
|  .  =  S .      |
|.o o= o. E       |
|=+=o.+...        |
|+O+oo.B ..       |
|oo=+oB.o.        |
+----[SHA256]-----+

Administrator@WIN-I0Q1644D4PA MINGW64 ~
$ cd .ssh//进入.ssh目录

Administrator@WIN-I0Q1644D4PA MINGW64 ~/.ssh
$ ll
total 5
-rw-r--r-- 1 Administrator 197121 2602 Feb 27 22:07 id_rsa
-rw-r--r-- 1 Administrator 197121  571 Feb 27 22:07 id_rsa.pub

Administrator@WIN-I0Q1644D4PA MINGW64 ~/.ssh
$ cat id_rsa.pub//查看id_rsa.pub文件内容
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDWon8O5XJp3jZXL7De8jmR0ittXV8jcrkI4fd+Nww3SdejqqxIiqhCRk5j10ifBlqmOSMg2JretUMdzOKbdOIuvT3e/oL69H8Le73uknR9X0G+VbmUyNNkevp0nDgscf82kiQUdbRb286/HpQWP1BQl+kt2P925CN6aIk511WT6kh7fxKIEuKJJ6XQxNSn/WSqEZHTuRDUlFjtQncDAAYCbkW4Fj98j/HMKdYfw0GpEvak5f/ACC8WD5Wc4kTnKoYrvhU3Lq/wAXokTjOFMvPbYd7JjgQnyUsl3y1Pl46fEV8JO24ZZvGuUp/WUB81Zs8okPHInznWSTBXaXQPKWccUCV0fEouchCO84eygdNsSVyxlaW+V4txo1UTiZZWHF5iPff8NgTqfHgkOcZ13T7Vipcxc

复制id_rsa.pub文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG keys

image-20220227221417681

接下来再往远程仓库push东西的时候使用SSH连接替代HTTPS连接就不需要登录了。

9 在IDEA中使用Git

9.1 配置忽略文件

忽略工具里的特定文件能够屏蔽IDE工具之间的差异。

  1. 创建忽略规则文件git.ignore(前缀名随便起)

    这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig文件引用,建议也放在用户家目录下

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
  1. 在.gitconfig文件中引用忽略配置文件(此文件在Windows的家目录中)
[user]
	name = zxk
	email = zxk.com
[core]
	excludesfile = C:/Users/Administrator/git.ignore

注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”

9.2 定位Git程序

image-20220227222601752

9.3 初始化本地库

image-20220227222851861

选择要创建Git本地仓库的工程。

image-20220227222835305

9.4 添加到暂存区

右键点击项目选择Git ->Add将项目添加到暂存区。

image-20220227223212186

9.5 提交到本地库

image-20220227223452880

image-20220227223437523

9.6 创建分支

image-20220227223647492

image-20220227223745079

9.7 切换分支

image-20220227223847527

9.8 合并分支(冲突合并)

正常合并:

image-20220227224019578

冲突合并

master分支当前版本是在master first commit版本上更新为master second commit版,

hot-fix分支创建时为master first commit版本,现修改文件内容,提到本地库,更新为hot-fix first commit版本,

此时在master分支上合并hot-fix分支会发生冲突

image-20220227224716466

试图合并:

image-20220227225138063

发生冲突:

image-20220227225225424

手动合并:

image-20220227225356235

结果如下:

image-20220227225424930

9.9 切换版本

image-20220227224340438

10 在IDEA中连接GitHub

10.1 设置GitHub账号

image-20220227225807481

去GitHub上设置token

image-20220227230008394

image-20220227230026252

image-20220227230031568

image-20220227230035716

image-20220227230044768

image-20220227230051397

image-20220227230106661

复制该口令到IDEA中,登录

10.2 分享工程到GitHub中

image-20220227230303599

此时远程库创建别名Remote(本例为idea-remote)

image-20220227230833363

右下角提示:

image-20220227230847380

来到GitHub中发现已经帮我们创建好了git-demo-idea的远程仓库。

image-20220227230937271

10.3 克隆

运行IDEA

image-20220227231312506

GitHub获取要克隆的工程的连接

image-20220227231413272

image-20220227231808605

正常创建新工程即可

10.4 push

右键点击项目,(先添加暂存器,提交本地库)可以将当前分支的内容push到GitHub的远程仓库中。

image-20220227232340356

可以指定远程库连接的别名:

image-20220227232424565

推荐使用ssh免密登录,创建别名如下:(先从GItHub上获取远程库的ssh连接)

image-20220227234405324

10.5 pull

右键点击项目,可以将远程仓库的内容pull到本地仓库。

image-20220227234727719

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐