赞
踩
Git 可以给仓库中某一次 commit 的提交打上标签。对于重大的版本经常会打上一个标签来表示它的重要性。
git tag【tag 名称】
:创建标签。
git tag
:查看标签。
默认情况下,git push
命令并不会将标签推送到远程仓库中去,必须显式地手动推送。这样,当其他人从远程仓库克隆或者拉取时,也能获取到标签。
git push【远程仓库别名】 【tag 名称】
:推送指定的标签。git push【远程仓库别名】 --tags
:推送全部标签。git tag -d【tag 名称】
:删除本地仓库中的标签。git push 【远程仓库别名】-d【tag 名称】
:删除远程仓库中的标签。回退到指定标签的版本后,并不会在当前标签的版本上直接修改内容,因为也并不想舍弃当前标签的版本后面提交的内容。一般情况下,会在当前标签的版本基础上另开一个分支出来修改内容,之后再将分支进行合并即可。
git checkout 【tag 名称】
:回退到指定标签的版本。
在版本控制过程中,使用多条线同时推进多个任务,这就是分支。
Git 的分支,其实本质上仅仅是指向提交对象的指针,会在每次提交时自动移动,永远指向最新一次的提交对象。
HEAD 指针总是指向当前所在的分支,以此来告知 Git 当前正在哪个分支上。
Git 的默认分支是 master 分支,会在
git init
时自动创建。master 分支并不是一个特殊的分支,和其他分支没有任何区别。
SVN 中创建分支是将目录和文件全部都复制一套出来。
使用分支的好处:
hot_fix
分支。hot_fix
分支。hot_fix
分支上提交一次。hot_fix
分支合并进去后,进行一次提交。git branch
:查看所有的分支。
hot_fix
* master // 前面的 * 号表示当前正在这个分支上
git branch 【分支名称】
:创建分支。
git checkout 【分支名称】
:切换分支。
git checkout 【分支名称】
命令会进行以下操作:
- 如果本地仓库中已有这个分支,会切换到指定的分支上。
- 如果本地仓库中没有这个分支,会检查远程仓库中是否有同名分支:
- 如果没有的话,报错。
- 如果有的话,Git 会自动新建一个本地分支,并为本地分支与远程分支建立跟踪关系。
修改的内容在哪个分支上提交,将会归属于哪个分支,另一个分支就不会再显示这部分内容了。
- 如果在 master 分支上修改了
index.txt
文件的内容,但是只在工作区做了修改,并没有添加到暂存区和提交到本地仓库中,那么如果切换到 hot_fix 分支,index.txt
修改的内容也将被带过去。- 如果在 master 分支上修改了
index.txt
文件的内容,但是只在工作区做了修改和添加到了暂存区,并没有提交到本地仓库,那么如果想要切换到 hot_fix 分支将会被 Git 阻止。
git checkout -b 【分支名称】
: 创建并同时切换分支。
git branch -d 【分支名称】
:删除分支,前提是当前所在的分支不能是要删除的分支。
git merge 【分支名称】
:将 【分支名称】的内容合并进当前所在的分支里。
Updating 373446c..b4f6025
Fast-forward // 如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单地将指针向前推进,这就叫做快进 fast-forward
index.txt | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
如果在两个不同的分支中,对同一个文件的同一个地方进行了不同的修改,那么对这两个分支进行合并时就会产生冲突。
Auto-merging index.txt
CONFLICT (content): Merge conflict in index.txt
Automatic merge failed; fix conflicts and then commit the result.
删除特殊符号、留下需要的内容后,重新 git add
、git commit
提交一次即可解决冲突。
git push 【自定义的远程仓库别名】【分支名】
:将本地仓库的分支及其内容推送到远程仓库。
如果此时远程仓库还没有这个分支,
git push 【自定义的远程仓库别名】【分支名】
会直接在远程仓库中新建分支。
fetch、pull、push 也可以不带后面的自定义的仓库别名和分支名称来明确指定远程分支,此时就会使用上游分支。
可以使用git branch -vv
来查看已设置的上游分支。
可以使用git branch --set-upstream-to 【自定义的远程仓库别名】/【分支名】
来设置上游分支。设置上游分支后,就意味着本地分支和远程分支之间建立了跟踪关系。直接从远程仓库克隆到本地的项目,本地分支的上游分支默认就是远程仓库拉取到本次仓库的远程分支的映射,会自动为本地分支和远程分支建立跟踪关系。
从远程仓库拉取到本地仓库的的远程分支的映射是以
<remote>/<branch>
的形式命名的,用来引用对应的远程分支。
git push origin master
。Enumerating objects: 31, done.
Counting objects: 100% (31/31), done.
Delta compression using up to 8 threads
Compressing objects: 100% (18/18), done.
Writing objects: 100% (31/31), 2.38 KiB | 610.00 KiB/s, done.
Total 31 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/huadangmao/test.git
* [new branch] master -> master // 将本地的 master 分支推送到远程的 master 分支
git pull 【自定义的仓库别名】【分支名称】
:将远程仓库的分支及其内容拉取到本地仓库并进行合并。
如果本次仓库此时还没有这个分支,
git pull 【自定义的仓库别名】【分支名称】
不会直接新建分支,它需要在一个已存在的本地分支上执行。
此时,可以使用git checkout 【分支名称】
。
git fetch
:从远程仓库拉取代码到本地仓库,不会直接和本地的文件进行合并,也就是说并不会修改工作区的代码。
git pull
; 从远程仓库拉取代码到本地仓库,并直接和本地的文件进行合并。所以git fetch + git merge = git pull
。
git pull origin master
:拉取远程仓库 master 分支的代码到本地仓库并合并。git push origin -d 【分支名称】
:删除远程分支。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。