第一步:创建项目
点进去我们自己的项目,并点击右上角附近的“+”号,然后选择This group下的 New project
我们进入到如下页面 ,我们按照顺序:填写Project name → 填写说明Project description(optional)→ 下面的框框默认选择Private即可,最后点击Create project
特别注意 :
当前新项目默认 Jenkins@jenkins为master权限,在jenkins部署也使用此账号拉取。
必须为Private,其他Internal、pubic等权限表示所有人都可以使用!
注意:
首次提交代码并创建master必须由组长账号亲自上传,原因:master为保护项目,只有master权限才可上传。
第一步:创建README文件
创建README.md文件并push到远程创建master分支
// 1. 克隆项目
git clone [email protected]:English/englishPorject-front.git
// 2. 进入我们克隆代码文件夹
cd englishPorject-front
// 3. 创建 README.md文件
touch README.md
// 4. 将README.md文件添加到本地
git add README.md
// 5. 提交README.md文件
git commit -m "add README"
// 6. Push到我们远程
git push -u origin master
第二步:复制文件到克隆git文件下
将我们需要push到远程的代码放到我们克隆文件夹中(带有隐藏的.git文件同级目录),复制过程中将原先文件夹附带的 .git文件、node_modules文件去除!
第三步:开始push到远程:
// 1. 将所有文件添加到本地
git add .
// 2. 提交到本地
git commit -m "Initial commit"
// 3. push到远程
git push -u origin master
结果如下:
第二步:打Tags(组长)
1) 我们每次新建项目可以打tag方便我们切换回去,我们每次发版都需要打tag。
2) 只有组长才可以打master中tag,我们tag只打在master分支上即可。
1) 新建项目
2) 发版项目
3) 可以将往前不需要的tags删除掉:比如说现在已经是第三版运行很久了或者刚刚上线,可以将之前的第一版删除掉,等我们第三版运行可以的时候在删除掉第二版也可。
查看tag
# 列出所有tag
git tag
# 查看tag信息
git show 初始项目
删除tag
# 删除本地tag
git tag -d 初始项目
注意:当前在本地git show见不到了,但是远程还有,我们执行下面
# 删除远程tag
git push origin :refs/tags/初始项目
新建tag
# 新建一个tag在当前commit
$ git tag dev1.1
# 将本地所有标签推送到远程分支
git push origin master --tags
# 新建一个tag在指定commit
git tag dev1.0 a7d9b5899fdde7115505eaaf4c2df7b2197e7547
# 将指定标签推送到远程分支
git push origin master dev1.0
第三步:建立分支:
我们建立完项目后我们手动添加分支,进行项目合作,我们通过一个功能建立一个分支即可比方说一个项目组7个人,共开发三个功能,两人一个功能,那么我们基于dev建立三个不同的分支开发,最后合并到dev上即可;
首先我们建立项目的时候已经存在了master分支,此分支为我们最终线上分支,在我们每次开发完毕sprint并测试稳定后合并到master。
建立开发主分支dev,我们在此基础上建立各自功能的具体开发分支:比如我们sprint1共开发两个功能模块那么我们共需建立两个基于dev子分支即可。
我们每个开发分支开发完毕立即合并到主开发dev上面并删除此开发分支即可,然后基于dev建立测试分支用来内部测试和解决bug。
然后我们所有开发分支开发完毕,将所有测试分支合并过来然后建立基于此总开发分支建立测试分支,并且删除此开发总分支即可,我们现在开始提交测试测试组,如果此刻出现了很多bug,我们在此基础上建立不同的功能模块进行解决然后合并到此测试总分支,最终测试组给出合格通告后我们在此基础上进行发布线上。
经过一段时间基于稳定状态我们合并到master分支,删除原来分支即可,我们当下已经开发完一版sprint了。
Sprint版本 + test/dev/prod + 姓名/功能 + 日期
// Sprint1建立开发总分支dev:
SprintV1.0_dev_20191016
// Sprint1建立开发功能分支:E-shop代表我要开发这个功能或者写人
SprintV1.0_dev_E-shop_20191016
SprintV1.0_dev_baiaimin_20191016
// Sprint1建立测试分支
SprintV1.0_test_20191016
// Sprint1建立线上分支:
SprintV1.0_prod_20191016
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
##更新远程分支:
git remote update origin --prune
# 根据当前分支新建一个分支,但依然停留在当前分支,
git branch develop
# 根据其他远程分支创建新分支
git branch develop origin/master
# 根据当前分支新建一个分支,并切换到该分支
git checkout -b develop
# 建立完分支后必须推送当前新建立分支到远程
git push --set-upstream origin develop
这个时候我们发现我们新建立的分支错误了,我们可以删除掉新建立的分支:
# 切换其他分支以删除当前我们需要删除的分支
git checkout master
# 删除本地分支
git branch -d develop
# 删除远程分支
git branch -r -d origin/develop
git push origin :develop
注意:如果我们想要强制删除分支,只需我们将-d 改为 -D即可。
步骤一:查看可以合并到此分支
我们在合并提交前可以看下我们有哪些需要合并到我们当前的分支
# 查看需要合并到当前的分支
git branch --merged
步骤二:切换分支
首先我们需要切换到我们需要合并到的地方,比如说我们从develop合并到master,我们就要切换到master上面
# 切换master分支,如果我们切换的时候只显示commit码,我们可以手动切换
git checkout origin/master
步骤三:合并
# 合并
git merge develop
步骤四:查看冲突
# 查看冲突地方:
git status
步骤五:修改冲突
这个时候我们最简单的办法就是在代码中进行修改冲突:
注意:
1)如果两者地方都是自己,可以选择第一个接受当前,如果不知道则自己备份一份资料,接受导入,然后将自己的放进去,或者接收两者,这个和冲突方进行核对,当然不管我们选择哪个在提交之前我们都可以撤销的。
2)我们冲突的时候可能会有其他人的代码下载下来,我们这个时候一并提交上去即可。
步骤六: 提交代码
当前我们解决完了重构,没有任何爆红的地方,我们开始再次提交:
# 添加到本地
git add .
# 提交到本地
git commit -m “提交解决 合并冲突”
# 重新下载代码
git pull
# push到远程
git push -u origin master
结束
这个时候我们已经到正常开发了,如果我们开发过程遇到提交错误,需要更改如何解决呢,我们学习下面的git 撤销、回滚、删除等操作!
。。。。。。。。。.。。.。。。.。。.。.。。。。。。。。。。。。。。。。。
撤销保留代码
我们进行了commit,但是我们还想更改我们上次提交的内容:
# 查看日志,找到我们最近提交的下一个,我们要切换到下一个的上面去。
git log
git checkout 54 // 切换到这个上面,然后才可以撤销57的
# 撤销本地提交保留代码,后面commit号选择从上面数第二个,就是我们最近提交的下面那个,意思是我们重新回到这个提交下,撤销了最近一次提交。
git reset --soft 574c01dda6328a14eb49d5a40573d2b3e888a64b
撤销本地最近一次提交:
git reset --hard HEAD~1
撤销不保留代码
如果我们不想要我们的最近提交,我们可以直接执此代码:
# 撤销本地提交不保留代码,此撤销将下面的这个commit_id上面的提交都删除了(慎用!)
git reset --hard 574c01dda6328a14eb49d5a40573d2b3e888a64b
回滚:撤销远程
当前我们已经提交了此次代码,但是发现我们已经提交错误分支了,我们就需要进行回滚了
# 回滚远程当前提交代码
git revert HEAD
我们点击回车,这个时候又回到我们之前commit状态之前了。如果我们点击了R,就说明退回到了commit完毕状态,我们没有好修改的了,但是远程是有的。
我们现在开始执行进行提交代码
全部回滚不留代码
我们如果不想要我们最近几次提交的代码,我们直接切换到我们想要的提交上,然后执行下面代码上面所有提交都会删除
# 切换到我们需要的提交上去,执行此代码则将切换的分支以上都删除
git reset --hard a0a77525134aeadda9b6739e1d7220f89fb1daf9
#强制提交,如果我们再此打了tag,那我们就需要切换到tag上在回滚。
git push -f origin master
删除:可删除远程多次提交
找到我们想删除的分支,并复制此分支下面commit_id
#删除某次提交
git rebase -i 23bf0218fdd0c5182a8898d7881f9213a263b942
问题:出现以上弹框,我们执行此命令
# 撤销之前删除提交
git rebase --abort
我们继续输入命令:
#删除某次提交
git rebase -i 23bf0218fdd0c5182a8898d7881f9213a263b942
第一步:我们根据上下左右键选择到需要修改的地方然后输入:“i”
第二步:将找到ID这一行前面的pick改为drop,修改完后我们按下“ESC”表示不能修改了
第三步:按下esc后我们直接桥接键盘:“:wq" (:wq!)然后enter即可,表示保存退出
接着我们push到远程即删除了,在push之前本地是有的。
#强制push到远程
git push -f origin develop
任何时候我们都可以查看log日志,如果按下git log退步出来,请按下键盘Q键。
查看近几次提交
# 查看最近提交的2次
Git log -2
查看某个人提交
# 查看某个人最近提交前2次,去掉-2表示全部
git log --author baiaimin -2
查看整条线
# 查看一条线整个提交历史最近5条 ,去掉-5表示整个历史记录
git log --graph -5
查看提交名
# 查看简洁的最近3条记录提交,去掉-3表示所有的提交
git log --oneline -3
如何修改远程URL地址(组长)
效果如下:
修改本地的URL地址(项目成员)
当我们远程修改后,我们本地更新不了代码,效果如下:说明远程ssh地址变更了,我们复制此红线框部分
# 一:查看当前url地址:
git remote -v
# 二:修改本地仓库当前url地址:复制上面红框下来即可
git remote set-url origin git@git.dmsd.tech:English/englishProject-mobileTest.git
git@git.dmsd.tech:English/english_mobile_vue.git
修改html:
git remote set-url origin https://github.com/TGB-Duke/ftdp_project_front.git
我们继续pull代码即可了:
修改后问题:如果不能正常拉去代码的话,我们点击下刷新即可。
修改项目目录下的.git目录下的config文件,把里面的ip地址替换成新的ip地址就可以了,慎用直接修改配置文件!
说明
在我们需要提交或者想查看最近更改的时候方便查看提交内容和远程的区别,避免冲突。
工作区与暂存区
# 查看修改
git diff
暂存区与最后提交
# 查看工作区与缓存区
git diff --cached
工作区与最近提交
# 查看工作区与最近提交
git diff HEAD
暂存区与指定提交
git diff --cached 3dd4999ffdcc0bfd9ba98744f665cd8c5347ac
工作区与指定提交
git diff 8d9338023885329f7320131f8f6f58c220c89318
两次提交比较
git diff b4c8b533f666aa88db08bacd619d415058b505e3
8d9338023885329f7320131f8f6f58c220c89318
比较两个分支区别
git diff master develop
Git diff 参数详细说明:
git diff --ignore-all-space 忽略空白字符,等同于 git diff -w
git diff --ignore-space-at-eol 忽略行尾的空格
git diff --ignore-space-change 忽略空格差异,例如有些人间距使用 tab 键,有些使用4个空格,使用 --ignore-space-change 参数来忽略这种差异
git diff --ignore-blank-lines 忽略空行的差异
git diff --stat 按文件来显示统计信息,显示每个文件的增加删除,修改的行数 git diff --shortstat 只显示统计信息,统计所有增加删除,修改的文件数
git diff --diff-filter=D 只显示给定状态的改动,D 表示只显示删除的文件(可选的参数值包含:ACDMR,分别表示:ADD Copied Delete Modified)
git diff –G <regex> 只显示满足条件的改动
Group:仓库,就是我们项目最外面的文件夹,每个项目组初建立时候创建且只能有一个。
Project:就是我们项目中的一个小项目,比如大米英语的前端v1.0版本在git中就是一个项目。
工作区:就是我们正在敲代码的地方,即我们创建的工程文件, 在编辑器可直观显示。
暂存区:就是我们执行git add . 或者点击左侧边栏“+”号的地方就是放进了暂存区它只能通过git GUI或git shell 窗口显示,提交代码、解决冲突的中转站
本地仓库:当我们提交后就进入了本地仓库,它是连接本地代码跟远程代码的枢纽,不能联网时本地代码可先提交至该处
远程仓库:就是我们push后就到了我们远程仓库,即保存我们代码的服务器。