目录
一、说明
Git是项目版本控制使用最广泛的工具,与SVN不同,后者依赖中心服务器,一旦中心服务器宕机,会造成较大的影响。Git虽有远程仓库概念,但同时是分布式的,本地同时也是完整的仓库,无论是管理速度和安全都有巨大提升。
二、Git安装和常用命令
1. 下载
下载地址:官网: http://git-scm.com/download
镜像:https://registry.npmmirror.com/binary.html?path=git-for-windows/
下载安装完成后,桌面右键会有图形化界面和终端入口:Git GUI Here 和 Git BASH Here,分别是图形化界面和终端。
2. 设置用户信息
打开 git bash输入:
git config --global user.name "用户名"
git config --global user.email "用户邮箱"
3. 常用指令配置别名(为了方便)
3.1 在用户目录下创建.bashrc 文件:
touch ~/.bashrc
3.2 用文本编辑器打开 .bashrc文件,输入:
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
alias ll='ls -al'
注意不要多加空格。
3.3 修改完后source一下,在给git bash终端:
source ~/.bashrc
4. 解决git bash终端中文乱码问题
4.1 打开git bash终端输入:
git config --global core.quotepath false
4.2 在git安装目录的/etc/bash.bashrc文件最后加入:
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
5. 创建本地仓库
步骤:
1.任意位置新建目录作为本地git仓库
2.在目录中打开git bash终端,输入:
git init
3.创建成功则会出现 .git 目录
6.基础操作指令
新建的目录中除了.git目录都是工作目录,工作目录中的文件修改时分为几个状态,这些状态随着git指令在变化。
首先,对工作区的文件分为:1.创建新文件;2.对已存在的文件进行修改。这时,文件对应的状态分别是1. 未跟踪和2. 未暂存。工作区的文件经过修改后,通过git add指令进入暂存区,然后通过git commit才最后到了仓库中,仓库每次收到git commit就会记录一次提交信息,从而实现版本控制。
1. git add:工作区到暂存区, 文件名可以用通配符.
2. git commit:暂存区到仓库区,-m加注释
3. git status:查看修改的状态
4. git log [option]:查看提交记录
--all 显示所有分支
--pretty=online 将提交信息显示为一行
--abbrev-commit 使输出更简短
--graph 以图的形式显示
下面以file_01.txt的创建和修改为例:
1.工作区创建file_01.txt
touch file_01.txt
2. 使用git status查看工作区状态
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
file01.txt
nothing added to commit but untracked files present (use "git add" to track)
Untracked files即为处于未跟踪状态的文件,终端同时也提示了使用git add来进行跟踪,即加载到暂存区
3. 使用git add 文件名对文件进行跟踪
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git add file01.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: file01.txt
再查看状态,file_01.txt已经成了即将提交的状态,此时在暂存区.
4. 使用git commit -m "注释" 提交到仓库区,注释就是版本改动内容
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git commit -m "commit file_01.txt"
[master (root-commit) 6c2289a] commit file_01.txt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file01.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git status
On branch master
nothing to commit, working tree clean
查看状态,工作区已经干净了git log可以查看仓库的提交记录.
5. git log可以查看仓库的提交记录
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git log
commit 6c2289a6e81ff1b065fd80a09dea13ec4b122847 (HEAD -> master)
Author: cxb <1320414730@qq.com>
Date: Mon Apr 4 00:56:22 2022 +0800
commit file_01.txt
可以看到,提交记录中, 记录了提交作者,时间等信息,可以追踪文件维护者.
6. 对file_01.txt文件进行修改后再次查看状态
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (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: file01.txt
no changes added to commit (use "git add" and/or "git commit -a")
可以看到文件被修改,并处于not staged未暂存状态.
7. git add将文件加载到暂存区,git commit将文件提交到仓库,并查看
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git add file01.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git commit -m "commit file_01.txt second"
[master faf6f6a] commit file_01.txt second
1 file changed, 1 insertion(+)
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git log
commit faf6f6a2b600c91e84d50dbe156078d247f48f3b (HEAD -> master)
Author: cxb <1320414730@qq.com>
Date: Mon Apr 4 01:07:07 2022 +0800
commit file_01.txt second
commit 6c2289a6e81ff1b065fd80a09dea13ec4b122847
Author: cxb <1320414730@qq.com>
Date: Mon Apr 4 00:56:22 2022 +0800
commit file_01.txt
可以看到有两次提交记录.
8.版本切换: git reset ,使用git reset --hard 唯一标识符,即可切换版本.
例如将file_01.txt切换到未修改的版本:
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git reset --hard 6c2289a
HEAD is now at 6c2289a commit file_01.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git-log
* 6c2289a (HEAD -> master) commit file_01.txt
版本回退后,提交记录只剩下了最开始的那条,文件也回到了修改前的版本,此时如果又想切换到修改过的版本,就要知道修改后的版本的唯一标识符.可以通过git reflog查看记录.
9.用git reflog查看记录找到修改后版本的唯一标识符
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git reflog
6c2289a (HEAD -> master) HEAD@{0}: reset: moving to 6c2289a
faf6f6a HEAD@{1}: commit: commit file_01.txt second
6c2289a (HEAD -> master) HEAD@{2}: commit (initial): commit file_01.txt
可以看到修改后的版本唯一标识符为 faf6f6a,用操作8即可切回修改后的版本.
10.切换回修改后的版本
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git reset --hard faf6f6a
HEAD is now at faf6f6a commit file_01.txt second
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git-log
* faf6f6a (HEAD -> master) commit file_01.txt second
* 6c2289a commit file_01.txt
11.用通配符的而方式git add . 管理文件时,可以创建.gitignore来指定文件排除在管理范围外,在.gitignore中输入要忽略的文件名即可.
7.分支
分支是多人协作开发的一个重要概念,把自己的工作从主线上分离,即每个人都在自己的支线上修改,互不影响,最后再做合并。
1. 查看分支:
以上面的file_01.txt为例,用git branch可以查看项目分支:
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git-log
* faf6f6a (HEAD -> master) commit file_01.txt second
* 6c2289a commit file_01.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git branch
* master
可以看到打印记录的HEAD指向的master就是当前对应的分支。
2. 添加分支:
git branch 分支名 可以添加新分支:
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git branch dev01
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git-log
* faf6f6a (HEAD -> master, dev01) commit file_01.txt second
* 6c2289a commit file_01.txt
添加分支后再查看,发现已经有master和dev01两个分支,且分支有相同的提交记录,因为是从当前状态建立的新分支,创建前的状态是相同的。
3. 切换分支:
此时存在多个分支,当前分支为HEAD指向的分支,修改文件时只会对当前分支文件进行修改,要切换分支进行操作,用git checkout 分支名:
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git checkout dev01
Switched to branch 'dev01'
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (dev01)
$ git-log
* faf6f6a (HEAD -> dev01, master) commit file_01.txt second
* 6c2289a commit file_01.txt
HEAD指向了dev01。
4.创建的同时切换分支:
git checkout -b 分支名,在创建新分支同时切换到新分支上:
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (dev01)
$ git checkout -b dev02
Switched to a new branch 'dev02'
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (dev02)
$ git-log
* faf6f6a (HEAD -> dev02, master, dev01) commit file_01.txt second
* 6c2289a commit file_01.txt
5. 合并分支:
在dev01分支上创建file02.txt并提交到仓库中,其他分支仓库访问不到该提交记录,而多人协作开发最后需要功能整合,需要分支合并,一般将其他支线合并到master上,首先切换到master支线,输入git merge 分支,出现类似vim界面,按ecs,:wq保存退出:
####分支合并前的状态
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (dev01)
$ git-log
* 3af61e6 (HEAD -> dev01) add file02
* faf6f6a (master, dev02) commit file_01.txt second
* 6c2289a commit file_01.txt
####分支合并
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git merge dev01
Updating faf6f6a..3af61e6
Fast-forward
file02.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file02.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git-log
* 3af61e6 (HEAD -> master, dev01) add file02
* faf6f6a (dev02) commit file_01.txt second
* 6c2289a commit file_01.txt
dev01支线的改动合并到了master中,这里是merge的快进模式。dev和master都有修改时merge才会是拱形记录,若只是dev上有修改,合并到master上就会用Fast-forward快进模式,不显示为拱形。
6. 删除分支
git branch -d 分支:询问删除,删除前检查
git branch -D 分支:强制删除
注意在支线下不能删除本身支线。
7. 解决冲突
不同支线对同一个文件进行修改时,合并支线会发生冲突,此时需要管理人手动解决。
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git merge dev
Auto-merging test01.txt
CONFLICT (content): Merge conflict in test01.txt
Automatic merge failed; fix conflicts and then commit the result.
<<<<<<< HEAD
3
=======
1
>>>>>>> dev
3和1即为两个支线中对同一个空白文件的插入修改,自行选择保留的修改。
8. 实际开发中分支的一般原则和使用流程
1.master分支:
需要拿来上线的分支,主分支,线上分支。
2.develop分支:
从master创建的开发分支,但并不直接在这分支上开发,而是进一步创建feature分支进行开发。事实上可以理解成内部测试用的master分支。
3.feature分支:
从develop分支创建的多个feature并行开发分支,分支开发完成后合并到deveelop分支。
4.hotfix分支:
从master派生的分支,线上bug修复分支,修复完成后合并到master、develop、test分支等。
8. Git远程仓库管理
公司一般搭建自己的服务器用Gitlab,为了方便学习,这里用国内站点码云。
在官网注册登陆账号:https://gitee.com/。
1.创建远程仓库:
点击页面右上角加号新建仓库,输入仓库名称即可。
2. 配置SSH公钥
1. 生成公钥
ssh-keygen -t rsa
可以无视接下来的输入操作,一路回车直到生成结束。
2. 获取公钥
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master|MERGING)
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCg1DhCz09Ss8v3Y8ccpUSw5sJpJXkiMhyd5EMlLF6IcbJ/Zeag7PXyu/d9jPGwYIJEhEgEEy94L/SN9V4trpDJhfuHlEscShHso+BFuDDEWYnxf8WTs3m3G349XNztVrRIQ6eoagkNnNanjoovBWxIp/G0wXX35VPNRksJkLiwMexdCc5dJnduIIUrg8zb3By0z5oTM8n4ur8PSvgjrfdDDWX5cIMx+dPV7vfV5x85PMJ2SwnKShtvnR8Npj8lR2+ZxFYYNnEcu5X6TFE+eK/oYmjnW8GE7td78gwBnbKOI8BkmHCARAr0ZsH0bEEe3+HSn/FMHYgd4JPVhZLoKElafFiNaV1FDPGeRHzo9KzqY6bZuPDxTShdkPWW6H1scWUn/jHsf2RJ+7mJzO1X/M29QdyKaCVGm8dgf6UHddB2A7vJWlPRL1YxwbLqPFzGQeMWzM+A8u8JD5Q1uomqgIEh72ok1YFInnaacRehsVo7tpkYwAVBhYZcGaz3CAC3xxE= cxb@DESKTOP-R5FJB2M
复制打印内容,到码云个人中心设置界面的安全设置输入公钥:
点击确定并输入码云密码。
3. 验证配置
在git bash终端可以验证配置是否成功:
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master|MERGING)
$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (212.64.62.183)' can't be established.
ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
Hi cxb! You've successfully authenticated, but GITEE.COM does not provide shell access.
3. 远程仓库添加查看和推送
1.添加远程仓库
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git remote add origin git@gitee.com:chenxiaobin1998/git_test.git
git remote add origin(约定俗成的远程仓库名字) 远程git地址
2. 查看远程仓库
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git remote
origin
可以看到有了远程仓库origin。
3. 本地仓库推送到远程仓库
git push [-f] [---set-upstream] 远端名称 本地分支名:远端分支名
-f:强制覆盖
--set-upstream:推送到远端同时建立起和远端的对应关联
如果已经有关联,则后面的都可以省去
######第一次推送,由于远程仓库为空才会出现下列提示
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git push origin master
Enumerating objects: 28, done.
Counting objects: 100% (28/28), done.
Delta compression using up to 4 threads
Compressing objects: 100% (19/19), done.
Writing objects: 100% (28/28), 2.28 KiB | 292.00 KiB/s, done.
Total 28 (delta 4), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To gitee.com:chenxiaobin1998/git_test.git
* [new branch] master -> master
#########--set-upstream关联本地分支和远程分支
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git push --set-upstream origin master:master
Everything up-to-date
branch 'master' set up to track 'origin/master'.
#########git branch -vv可以查看本地和远程关联状态
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git branch -vv
dev a843778 add 1
* master 5c36cb3 [origin/master] merge test01
##########关联后直接用git push就可以推送
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git push
Everything up-to-date
4.克隆远程仓库到本地
在github上下载代码时已经经常用到:
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习
$ git clone git@gitee.com:chenxiaobin1998/git_test.git clone_git
Cloning into 'clone_git'...
remote: Enumerating objects: 28, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 28 (delta 4), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (28/28), done.
Resolving deltas: 100% (4/4), done.
git clone 克隆地址 克隆到本地后的仓库名。
5. 远程仓库抓取和拉取
git clone克隆了整个项目,一般只会在第一次克隆整个项目,后续都只要获取远程仓库的更新,因此git clone不适用。要用抓取:git fetch和拉取:git pull,两者的差别是手动merge。
############本地仓库创建test04.txt并推送到远程仓库
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ touch test04.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git add test04.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git commit -m 'add test04'
[master 7c95f6f] add test04
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test04.txt
############push时已经做了merge
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 242 bytes | 242.00 KiB/s, done.
Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To gitee.com:chenxiaobin1998/git_test.git
5c36cb3..7c95f6f master -> master
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/git_test (master)
$ git-log
* 7c95f6f (HEAD -> master, origin/master) add test04
* 5c36cb3 merge test01
|\
| * a843778 (dev) add 1
* | bbf32d2 add 3
|/
* c27668c Merge branch 'dev02'
|\
| * 7376661 add test03
* | 6c7aca0 delete test03
* | d4e9789 add test03
|/
* f074abc add test02
* 807b221 add file01
* 6b1a9ef file01
* 3af61e6 add file02
* faf6f6a commit file_01.txt second
* 6c2289a commit file_01.txt
用git fetch拉取远程更新,需要自己merge:
##############抓取并查看记录,可以看到并没有merge
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/clone_git (master)
$ git fetch
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), 222 bytes | 44.00 KiB/s, done.
From gitee.com:chenxiaobin1998/git_test
5c36cb3..7c95f6f master -> origin/master
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/clone_git (master)
$ git-log
* 7c95f6f (origin/master, origin/HEAD) add test04
* 5c36cb3 (HEAD -> master) merge test01
|\
| * a843778 add 1
* | bbf32d2 add 3
|/
* c27668c Merge branch 'dev02'
|\
| * 7376661 add test03
* | 6c7aca0 delete test03
* | d4e9789 add test03
|/
* f074abc add test02
* 807b221 add file01
* 6b1a9ef file01
* 3af61e6 add file02
* faf6f6a commit file_01.txt second
* 6c2289a commit file_01.txt
需要将远程仓库分支merge到本地仓库:
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/clone_git (master)
$ git merge origin/master
Updating 5c36cb3..7c95f6f
Fast-forward
test04.txt | 0
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test04.txt
cxb@DESKTOP-R5FJB2M MINGW64 /d/git学习/clone_git (master)
$ git-log
* 7c95f6f (HEAD -> master, origin/master, origin/HEAD) add test04
* 5c36cb3 merge test01
|\
| * a843778 add 1
* | bbf32d2 add 3
|/
* c27668c Merge branch 'dev02'
|\
| * 7376661 add test03
* | 6c7aca0 delete test03
* | d4e9789 add test03
|/
* f074abc add test02
* 807b221 add file01
* 6b1a9ef file01
* 3af61e6 add file02
* faf6f6a commit file_01.txt second
* 6c2289a commit file_01.txt
可以看到本地仓库完成了merge,并且文件得到了更新。
git pull在拉取的过程中完同时完成了merge。
6. 解决合并冲突
场景描述:A和B修改了同一个文件的同一行代码,A先提交到了远程仓库,B比A晚,提交前要先拉取远程仓库的合并后再提交,因此拉取到了A的更新,发生了分支合并冲突。解决方法和本地冲突一致。
三、Visual Studio(2019)的git版控
以上学习都是基于终端命令行完成的,实际开发中大多依赖ide完成,这里介绍收集并学习的Visual Studio集成环境的git版控。
1.创建本地仓库并推送
1. 文件 —> 新建 —> 存储库 —> 添加远程仓库 —> 创建并推送
2. 已有项目解决方案右键 —> 创建Git存储库 —> 添加远程仓库 —> 创建并推送
2. VS git 视图
红色标记中对应抓取,拉取,推送和同步(拉取并推送)。
绿色标记对应更改的挂起,即代码修改自动生成了更改挂起,对应git add。
黑色标记即是当前分支,其中可以新建分支并查看历史提交记录。
当代码修改后,绿色标记自动产生了更改记录,点击后进入Git更改视图,写修改注释并全部提交,对应了git commit -m命令,推送到了本地仓库。
3. 添加Git存储库
菜单栏Git(G) —> 本地存储库 —> 文件夹。
选择对应的Git仓库,双击进入对应仓库,2. VS git 视图中绿色标记和黑色标记中间的选项即为仓库选择。
4. 克隆存储库
菜单栏Git—>克隆存储库—>输入项目git地址
5. 提交记录查看 git log
以及提过黑色标记处可以查看历史记录,点击选择分支右键查看历史纪录:
可以看到提交情况,包括唯一标识符,作者,日期,注释和分支合并等,如果想看红色标记对应版本是由两个分支谁向谁合并得到的,点击黄色标记框处,显示得到的就是各版本父代,或者直接点击黄框左边的转到父代。
6.修改上一个提交
勾中修改,会显示上一次提交的改动,在这个基础上进行提交,会覆盖上一次提交的内容和记录。若要恢复,目前只能在终端用git reflog找回。
7.版本回退 git reset
VS中的版本回退需要在提交记录中完成,调出提交记录,右键想要回退到的版本,选择重置对应的选项。保留更改指只回退提交版本记录,但代码修改还在,删除更改只回退提交版本记录的同时彻底还原了代码。
8. 文件暂存git add
同时修改了多个文件,但暂时只想提交部分文件,可以只将这部分文件暂存,再点全部提交时就只commit暂存推列中的文件。
9. 忽略文件 .gitignore
VS在项目生成版控时自动生成了.gitignore文件并加入了常规的文件,因此大部分不需要自己改动,若有需要自定义的,在该文件加入文件名即可。
10. 版本还原 git revert
还原(撤销)某个版本的修改,右键对应的版本,在重置上面有个还原选项,执行。
11.创建标记
对重要的版本更新做记录:
打开提交历史记录—>选中版本右键—>创建标记—>输入标记名—>创建标记
再次刷新记录就可以看到对应的版本末尾出现了标记信息。
12.新建分支
1. 打开提交历史记录—>选中版本右键—>新建分支(基于选中的分支)
2. 点击黑色标记可以看到新建分支选项,此时手动选择基于的父代版本。
13.切换分支
黑色标记显示了当前分支,点击进入可以看到本地分支和远程分支列表,双击切换。
14. 合并分支
黑色标记表示当前分支,点击进入可以看到本地分支和远程分支列表,右键其他分支选择合并到当前分支。
15.合并冲突管理
修改了相同文件的同一行代码为不同内容会引发合并冲突。会显示未合并存在冲突的文件,右键选择保留分支哪一方的内容,或者选择合并会出现三个视图,分别是两个分支的修改和第三个你最终想要确定的修改,可以在第三个视图上编辑,最后接受合并。
16.重定基底
git rebase修改支线基于的父代:选择黑色标记,右键选选定的支线选择重定基底到...选项,先择基底并重定即可。
17. 抓取、拉取、推送、同步
功能在终端指令都有介绍,VS中都集成在红色标记处。选择使用即可。