本文参考来自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
第一步:创建版本命令,首先选择一个合适的地方使用mkdir创建一个空目录,在使用pwd查看当前目录
$mkdir springCloud
$cd springCloud
$pwd
第二步:通过git init
命令把这个目录变成Git可以管理的仓库
发现在springCloud文件夹下面多了一个.git目录,这个目录是Git来跟踪管理版本库的
在springCloud目录下价格文件spring-cloud-config.txt文件
第一步:使用 git add spring-cloud-config.txt告诉git,把文件添加到仓库
第二步:使用git commit -m "add spring-cloud-config.txt"命令告诉GIT,将文件提交到仓库
修改spring-cloud-config.txt文件内容,git status 查看文件状态
重复使用之前的git add spring-cloud-config.txt,git commit -m "modify file",就可以将文件提交到仓库,注意:(只要变动(增删改)后的文件都可以使用改操作来提交到仓库。)
使用git log 查看历史操作记录
在git log 命令后面加查询参数 --pretty=oneline可以看到日志详情,其中一串很长的字符传是版本号
使用git reset --hard head^ 回退到上一个版本(^^)两个代表回退到上上个版本,回退到前100个版本使用head~100
回退后在使用git log --pretty=oneline命令查看版本历史记录发现当前版本回到了上一个版本
如果你回到之前最新的版本可以使用git reset --hard <版本号> 版本号不用全输入,查找版本号使用命令git reflog命令。
git commit 只会提交git add修改后的操作,文件修改后没有被git add的内容不会提交到仓库。
第一步: 修改spring-cloud-config.txt内容,然后git add spring-cloud-config.txt
第二步:在修改spring-cloud-config.txt内容,然后git commit -m "modify file",使用git status查看文件状态。
会发现第二次修改的内容并没有提交上去。
在操作一次git add spring-cloud-config.txt ,然后git commit -m "modify file"就可以把文件提交上去了。
使用git diff HEAD -- spring-cloud-config.txt 命令可以查看到当前文件与当前版本的区别
使用git checkout -- spring-cloud-config.txt 命令将工作区的内容直接回退到最新git commit或者git add版本
将文件中已经实现git add 命令的文件回退到工作区
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作
从远程克隆一个本地库
我们创建dev分支,然后切换到dev分支:
查看当前分支
换回master分支
删除dev分支
把dev分支的工作成果合并到master分支上
删除dev分支
后面的其它命令就不一一贴图了,直接贴说明加命令吧。
-----------------分支管理策略 start------------------
创建并切换dev分支
git checkout -b dev
修改readme.txt文件,并提交一个新的commit
git add readme.txt
切换回master:
git checkout master
准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward:
因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
git merge --no-ff -m "merge with no-ff" dev
合并后,我们用git log看看分支历史
git log --graph --pretty=oneline --abbrev-commit
-----------------分支管理策略 end------------------
-----------------Bug分支 start------------------
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash
现在,用git status查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug。
git status
首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:
git checkout master
git checkout -b issue-101
现在修复bug,需要把“Git is free software ...”改为“Git is a free software ...”,然后提交:
git add readme.txt
git commit -m "fix bug 101"
修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:
git checkout master
git merge --no-ff -m "merged bug fix 101" issue-101
太棒了,原计划两个小时的bug修复只花了5分钟!现在,是时候接着回到dev分支干活了!
git checkout dev
git status
工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:
git stash list
工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了:
git stash pop
再用git stash list查看,就看不到任何stash内容了:
git stash list
-----------------Bug分支 end------------------
-----------------Feature分支 start------------------
创建新的分支
git checkout -b feature
提交分支
git add feature.txt
git status
git commit -m "add feature"
切回dev,准备合并:
git checkout master
强行删除没有合并的分支命令
git branch -D feature
-----------------Feature分支 end------------------
-----------------多人协作 start------------------
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin
要查看远程库的信息,用git remote:
git remote
或者,用git remote -v显示更详细的信息:
git remote -v
推送分支
推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:
git push origin master
抓取分支
多人协作时,大家都会往master和dev分支上推送各自的修改。
现在,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆:
git clone https://gitee.com/www.linggan.com/springCloudConfig.git
当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支。不信可以用git branch命令看看:
git branch
现在,你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支:
git checkout -b dev origin/dev
现在,他就可以在dev上继续修改,然后,时不时地把dev分支push到远程:
git commit -m "add /usr/bin/env"
git push origin dev
推送失败,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,
先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:
git pull
git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:
git branch
再pull:
git pull
-----------------多人协作 end------------------
-----------------创建标签 start------------------
在Git中打标签非常简单,首先,切换到需要打标签的分支上:
git checkout master
然后,敲命令git tag <name>就可以打一个新标签:
git tag v1.0
可以用命令git tag查看所有标签:
git tag
默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?
方法是找到历史提交的commit id,然后打上就可以了:
git log --pretty=oneline --abbrev-commit
比方说要对add merge这次提交打标签,它对应的commit id是6224937,敲入命令:
git tag v0.9 6224937
-----------------创建标签 end------------------
-----------------操作标签 start------------------
如果标签打错了,也可以删除:
git tag -d v0.1
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令git push origin <tagname>:
git push origin v1.0
或者,一次性推送全部尚未推送到远程的本地标签:
git push origin --tags
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
git tag -d v0.9
然后,从远程删除。删除命令也是push,但是格式如下:
git push origin :refs/tags/v0.9
-----------------操作标签 end------------------