基本关系如下:
开发:
1. git clone ssh(项目的ssh) --->默认对应的是master分支
2. 同步分支:
<1> git checkout -b web <创建并切换到自己的分支>
<2> git push origin web <本地分支推送到远程>
<3> git branch --set-upstream-to=origin/temp temp <本地分支追踪远程分支web>
<4> git branch
本地仓库分为:工作区,暂存区,仓库区。
<5> 删除远程分支
git push origin --delete Chapater6
<6>删除本地分支
git branch -d Chapater8
工作区与暂存区:
添加、修改、删除操作发生在工作区
暂存区是工作完成小阶段的存储,是版本库的一部分
工作区与暂存区的交互如下
1.添加文件:
<1> git add 文件1 文件2 ...
<2> git add 目录
2.撤销
使用暂存区内容恢复到工作区, 放弃工作区的修改(暂存区内容覆盖工作区内容)
git checkout -- 文件名
3.删除
git rm 文件名 (在ide中删除文件,从工作区到暂存区提交)
git commit -m "说明信息" (从暂存区提交到仓库区)
暂存区与仓库区
仓库区个人开发一小阶段完成, 仓库区记录各版本可以回退,但是暂存区版本一旦提交就再也没有了。
暂存区与仓库区交互方式
1. 查看暂存区未提交记录
git status
2. 将暂存区的记录提交到仓库区
git commit -m "本次提交说明信息"
历史
1. 查看仓库区历史操作
git reflog
2. 对比工作区和仓库区中某版本文件的不同
git diff HEAD -- 文件名
3.回退
回退历史版本到暂存区
git reset HEAD ^ 或者版本号
本地与服务器
本地与服务器交互的方式如下:
1.获取:(dev远程公共分支, web私人分支)
<1>. git checkout dev (切换到公用分支)
<2>. git pull (获取代码)
<3>. git check out web (切回至自己分支)
2. 推送
git push origin web
3.合并分支
<1>. git checkout dev
<2>. git pull
<3>. git merge web
<4>. git push origin dev
<5>. git check out web
<6>. git merge dev
4. 解决冲突
在大家同时操作远程dev分支时,合并时可能出现冲突
<1>. 根据提示, 需要先获取服务器的变更----->git pull
<2>. 冲突解决完成, 再次添加,提交,推送
git add 文件
git commit -m
git push origin dev
Git中有一个非常重要的一个文件-----.gitignore
今天给大家免费送一个.gitignore忽略文件配置清单。
大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一旦push,处理起来会非常麻烦。
当然如果已经push了怎么办?当然也有解决方法,如下:
有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
拉取某个分支:
首先自己要与origin master建立连接:git remote add origin git@github.com:XXXX/nothing2.git
我们需要:git fetch origin dev 命令来把远程分支拉到本地
然后使用:git checkout -b dev origin/dev在本地创建分支dev并切换到该分支
最后使用:git pull origin dev就可以把某个分支上的内容都拉取到本地了
1.创建
git tag -a tagname -m "comments" //本地创建
push所有tag,命令格式为:git push [origin] --tags
加上 -f 覆盖原有的tag
2.删除
git tag -d tagname //本地删除
3.修改
git tag -f new_name old_name
git tag -d old_name
4.查看
git tag -l n1(n1表示注释显示一行)
5.提交
git tag -f v1.0
git push --tags 或
git push origin --tags //提交所有tag,不提交分支
git push origin tagname //提交单个tag
6.gerrit权限控制
需要给用户添加Push Annotated Tag权限
7.远程操作
查看远程tag
git ls-remote --tags //查看远程仓库标签
提交远程
git push origin tagname //提交单个标签
git push origin --tags //提交所有标签
删除
git push origin :refs/tags/version xxx
- 删除远程分支
- git branch -r -d origin/branch-name
- git push origin :branch-name
抓取
git checkout tag_name
https://blog.youkuaiyun.com/qq_32452623/article/details/76649109
对接Jenkins https://www.cnblogs.com/kevingrace/p/5651447.html
没有图确实有些抽象,我也只能凭借回忆了:
在出现需要你输入新的merge信息的终端窗口,在最上面的提示句下有一行空格,按照链接的帮助,按”i”进入输入模式,随便输入个什么,然后 esc,直接输入”:wq”你会发现这个出现在终端的最下面,这是OK的,最后 enter,就OK了。
在Ubuntu下的解决方法:
网上会有很多关于原理的解释,,我这边的具体操作: ubuntu下不需要键入 i 就可以直接输入merge信息,你可以参照Mac我说的步骤,输入merge信息后直接ctrl+x,然后终端会问你是否保存最新缓冲区,选择保存,然后还会有一个次问你把最新的merge信息保存到那个文件,我没有创建新的文件,直接Enter,就OK,然后你就会看到一堆 正常 merge 的信息。说的话实在是有些抽象,不过我尽量说的详细了,也是为了以后自己忘了,大家有什么步骤不明白可以直接问。