1 Git概述
从个人开发过渡到团队协作需求:版本控制
版本控制工具:
集中式版本控制工具: CVS、SVN(Subversion)、VSS……
分布式版本控制工具: Git、Mercurial、Bazaar、Darcs……
Git工作机制:
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
说明:
-
版本穿梭,底层其实是移动HEAD指针
-
本地库内存里记录的日志和版本信息,调用指针指向不同版本head->master->版本
-
版本穿梭具体操作内容:增加版本穿越日志,head指针偏移,文件内容改变
-
如何查看当前指针指向:
工作区以git-demo为例–>git-demo/.git/HEAD查看head指向得分支(此时指向master)–>git-demo/.git/refs/heads/master查看该分支当前指向得的版本号
3 分支操作
分支:在版本控制过程中,同时推进多个任务
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
命令名称 | 作用 |
---|---|
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 分支图解
-
创建分支
- 切换分支
说明:
master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。
HEAD如果指向master,那么我们现在就在master分支上。
HEAD如果执行hotfix,那么我们现在就在hotfix分支上。
所以切换分支的本质就是移动HEAD指针。
5 GitHub操作
GitHub网址:https://github.com/
5.1 创建远程仓库
5.2 远程仓库操作
命令名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push | 推送本地分支上的内容到远程仓库 |
git clone | 将远程仓库的内容克隆到本地 |
git pull | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
5.2.1 创建远程库别名
语法:
git remote -v (查看当前所有远程地址别名)
git remote add 别名 远程地址 (起名)
实操:(先获取远程库的连接)
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//成功推送分支
可以看到:master分支(内含4个版本)已经推送到远程库
5.2.3 拉取
准备工作:
在github上修改master分支的文件内容:
可以看到远程库里该文件新增了第四行内容
拉取语法: 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 团队内协作
- 选择邀请合作者
- 填入想要合作的人
- 复制地址并通过微信钉钉等方式发送给该用户,复制内容如下:
- 受邀请者在这个账号中的地址栏粘贴收到邀请的链接,点击接受邀请。
- 成功之后可以在受邀请者账号上看到git-demo的远程仓库。
-
受邀请者可以修改内容并push到远程仓库:
本地库修改,添加,提交,推送(没被邀请成为远程库成员,推送会被拒绝)
-
回到发帖人的GitHub远程仓库中可以看到,最后一次是受邀请者提交的
7 跨团队协作
- 将远程仓库的地址复制发给邀请跨团队协作的人,比如东方不败。
- 在东方不败的GitHub账号里的地址栏复制收到的链接,然后点击Fork将项目叉到自己的本地仓库。
叉成功后可以看到当前仓库信息。
-
东方不败就可以在线编辑叉取过来的文件。编辑完毕后提交
如果是克隆到本地的话,就要将修改先推给远程库
-
接下来点击上方的Pull请求,并创建一个新的请求。
- 回到岳岳GitHub账号可以看到有一个Pull request请求。
进入到聊天室,可以讨论代码相关内容。。。
- 如果代码没有问题,可以点击Merge pull reque合并代码。
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
接下来再往远程仓库push东西的时候使用SSH连接替代HTTPS连接就不需要登录了。
9 在IDEA中使用Git
9.1 配置忽略文件
忽略工具里的特定文件能够屏蔽IDE工具之间的差异。
-
创建忽略规则文件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
- 在.gitconfig文件中引用忽略配置文件(此文件在Windows的家目录中)
[user]
name = zxk
email = zxk.com
[core]
excludesfile = C:/Users/Administrator/git.ignore
注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”
9.2 定位Git程序
9.3 初始化本地库
选择要创建Git本地仓库的工程。
9.4 添加到暂存区
右键点击项目选择Git ->Add将项目添加到暂存区。
9.5 提交到本地库
9.6 创建分支
9.7 切换分支
9.8 合并分支(冲突合并)
正常合并:
冲突合并
master分支当前版本是在master first commit版本上更新为master second commit版,
hot-fix分支创建时为master first commit版本,现修改文件内容,提到本地库,更新为hot-fix first commit版本,
此时在master分支上合并hot-fix分支会发生冲突
试图合并:
发生冲突:
手动合并:
结果如下:
9.9 切换版本
10 在IDEA中连接GitHub
10.1 设置GitHub账号
去GitHub上设置token
复制该口令到IDEA中,登录
10.2 分享工程到GitHub中
此时远程库创建别名Remote(本例为idea-remote)
右下角提示:
来到GitHub中发现已经帮我们创建好了git-demo-idea的远程仓库。
10.3 克隆
运行IDEA
GitHub获取要克隆的工程的连接
正常创建新工程即可
10.4 push
右键点击项目,(先添加暂存器,提交本地库)可以将当前分支的内容push到GitHub的远程仓库中。
可以指定远程库连接的别名:
推荐使用ssh免密登录,创建别名如下:(先从GItHub上获取远程库的ssh连接)
10.5 pull
右键点击项目,可以将远程仓库的内容pull到本地仓库。