-
Notifications
You must be signed in to change notification settings - Fork 0
/
git.txt
64 lines (45 loc) · 3.27 KB
/
git.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Git冲突解决
一大早同事A来到办公室,打开电脑启动环境执行git pull(拉取代码,修改代码之前一定要先拉取养成良好的习惯,尽可能的减少代码冲突),开始修改项目的首页的Bug,啪啪啪...
一会儿同事B气喘吁吁的坐下来,同样的开机启动环境git pull,然后同样去修改首页的Bug,啪啪啪...
看似风平浪静,但是掐指一算,一会儿即将可能有大事要发生,等待中...
同事A事先修改完了Bug,git push到了远程服务器,然后继续去修改其它Bug,同事B也修改完了,执行了git push,然后高高兴兴去厕所了,回来以后一看小黑窗:
报.......错......了.......
推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突不要慌,解决办法我给大家介绍两种,酌情选择
解决方案一(强制覆盖本地代码,你自己修改的代码即将被远程库的代码所覆盖)
把你修改的代码进行备份,然后执行命令:
git reset --hard origin/master
git pull
从你备份好的文件当中把你写的代码拿过去,修改完成再进行git push
解决方案二
(合并远程库和你本地的代码)执行命令:
git fetch 更新远程仓库文件
git diff master origin/master 本地文件和远程仓库文件进行对比
git merge origin/master 自动合并
根据需求手动删除不必要的代码,修改完成git push到远程仓库
提交冲突的解决
D:\work\aml-sql> git fetch
D:\work\aml-sql> git merge
列出标签
$ git tag
模式查找标签
$ git tag -l 'v1.8.5*'
创建标签
Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。
一个轻量标签很像一个不会改变的分支——它只是一个特定提交的引用。
然而,附注标签是存储在 Git 数据库中的一个完整对象。 它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息
附注标签
$ git tag -a v1.4 -m "my version 1.4"
-m 选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,Git 会运行编辑器要求你输入信息。
通过使用 git show 命令可以看到标签信息与对应的提交信息:
$ git show v1.4
轻量标签
另一种给提交打标签的方式是使用轻量标签。 轻量标签本质上是将提交校验和存储到一个文件中——没有保存任何其他信息。 创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名字:
共享标签
默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。 这个过程就像共享远程分支一样——你可以运行 git push origin [tagname]。
$ git push origin v1.5
删除标签
要删除掉你本地仓库上的标签,可以使用命令 git tag -d <tagname>。例如,可以使用下面的命令删除掉一个轻量级标签:
$ git tag -d v1.4-lw
检出标签
如果你想查看某个标签所指向的文件版本,可以使用 git checkout 命令,虽然说这会使你的仓库处于“分离头指针(detacthed HEAD)”状态——这个状态有些不好的副作用:
$ git checkout 2.0.0