1.名词解释
fork:意思是从别人的代码库中复制一份到你自己的代码库,与普通的复制不同,fork包含了原有库中的所有提交记录,fork后这个代码库是完全独立的,属于你自己,你可以在自己的库中做任何修改,当然也可以通过Pull Request向原来的库提交合并请求。
watch: 相当于收藏,关注后,代码库有新的commit, 你就会收到通知。
star: 相当于关注,方便下次查找作者的项目。
2.git 指令
3.远程数据库、本地数据库
- 分支: Merge分支 Topic分支
Merge分支是为可以随时发布release而创建的分支,它还能作为Topic分支的源分支使用。
Topic分支是为了开发新功能或修复Bug等任务而创建的分支,若要同时进行多个的任务,请创建多个Topic分支。
指令学习
git init
在桌面创建一个文件(lianxi),在此路径下创建一个空的git本地仓库
Initialized empty Git repository in /Users/ML/Desktop/lianxi/.git/
在lianxi
下创建一个xxx.txt
文件,然后提交
git add xxx.tex
git commit -m "first commit"
[master (root-commit) 5389ca9] first commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 xxx.txt
创建名为issue1的分支
git branch issue1
不指定参数直接执行branch命令的话,可以显示分支列表,前面有*的就是现在的分支
issue1
* master
若要在新建的issue1分支进行提交,需要切换到issue1分支
切换到issue1分支
git checkout issue1
Switched to branch 'issue1'
在checkout命令中指定 -b选项执行,可以创建分支并进行切换
git checkout -b <brabch>
在切换到issue1分支的状态下提交,历史记录会被记录到issue1分支,在xxx.txt添加add命令说明后再提交(add 把变更录入到索引中)
git add xxx.txt
git commit -m "添加add的说明"
[issue1 a1fa976] 添加add的说明
1 file changed, 1 insertion(+)
向master分支合并issue1分支的修改, 执行marge命令以合并分支
git marge <commit>
该命令将指定分支导入到HEAD指定的分支,先切换master分支,然后把issue1分支导入到master分支
git checkout master
Switched to branch 'master'
git merge issue1
Updating 5389ca9..a1fa976
Fast-forward
xxx.txt | 1 +
1 file changed, 1 insertion(+)
既然issue1分支的内容已经顺利地合并到master分支了,现在可以将其删除了
git branch -d issue1
Deleted branch issue1 (was a1fa976).
接下来创建2个分支来尝试并行操作
首先创建issue2分支和issue3分支,并切换到issue2分支
git branch issue2
git branch issue3
git checkout issue2
* issue2
issue3
master
在issue2分支的xxx.txt 添加commit命令的说明提交
git add xxx.txt
git commit -m"这是说明"
[issue2 af79123] 这是说明
1 file changed, 1 insertion(+)
接着,切换到issue3分支
git checkout issue3
git add xxx.txt
git commit -m "说明"
这样,添加commit的说明的操作,和添加pull的说明的操作就并行进行了。
解决合并的冲突
把issue2分支和issue3分支的修改合并到master
切换master分支后,与issue2分支合并
git checkout master
git merge issue2
Updating b2b23c4..8f7aa27
Fast-forward
xxx.txt | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
接着合并issue3分支
git merge issue3
Auto-merging myfile.txt
CONFLICT (content): Merge conflict in myfile.txt
Automatic merge failed; fix conflicts and then commit the result.
1.png
自动合并失败,由于在同一行进行了修改,所以产生了冲突,这时xxx.txt内容如上
在发生冲突的地方,git生成了内容的差异,请做一下修改
1.png
然后重新提交
用rebase合并
合并issue3的时候,使用rebase可以使提交的历史记录显得更简介,现在暂时取消刚才的合并
git reset --hard HEAD~
切换到issue3分支后,对master执行rebase
git checkout issue3
git rebase master
和merge时的操作相同,修改在xxx.txt发生冲突的部分。
rebase的时候,修改冲突后的提交不是使用commit命令,而是执行rebase命令指定 --continue选项。若要取消rebase,指定 --abort选项
git add xxx.txt
git rebase --continue
rebase的时候,修改冲突后的提交不是使用commit命令,而是执行rebase命令指定 --continue选项。若要取消rebase,指定 --abort选项
标签
添加标签
git tag <tagname>
查看标签列表
git tag
如果在log命令添加--decorate选项执行,可以显示包含标签资料的历史记录
git log --decorate
commit 163f3c574865c36b9216d5bf9bbfd190d60a067b (HEAD -> issue3, tag: apple, master)
Merge: a1fa976 af79123
Author: shenyuanjiang <1223551803@qq.com>
Date: Fri Feb 2 10:13:05 2018 +0800
解决冲突后的提交
commit af791230eccc82a26eac60f3bae94c1fff9e06f8 (issue2)
Author: shenyuanjiang <1223551803@qq.com>
Date: Fri Feb 2 09:27:11 2018 +0800
这是说明
commit a1fa976a50f3157283c647ed1612f0cae054d3ba
Author: shenyuanjiang <1223551803@qq.com>
Date: Thu Feb 1 13:10:57 2018 +0800
说明
commit 5389ca9f8aad16a11e6cfd53cc11e0a46a476edb
Author: shenyuanjiang <1223551803@qq.com>
Date: Thu Feb 1 11:55:52 2018 +0800
添加注释标签
git tag -a <tagname>
标签列表
git tag -n
删除标签
git tag -d <tagname>
改写提交
git revert HEAD
另加: git log
a42e94c238dcb1ede23c2f73668ab0bace5fd49b
指的是版本号SHA1计算出来的一个非常大的数字,用十六进制表示
网友评论