首先是介绍git的工作流程:
关于git下载配置ssh这些简单骚操作就不一一讲解了,在这里我们着重记录一些最基本和关于的git基本命令,真正高深的操作我后期通过自我学习和实践会进一步补上,欢迎吐槽!!
git branch –set-upstream-to=origin/1.1.28 远程仓库建立连接(后面是本地分支)
git checkout -b 1.0.11 切换到本地分支
git pull 将服务器代码拉到本地
git push origin HEAD:refs/for/master 提交到自己的分支
新建项目下载分支之后操作
git checkout -b 1.0.2 origin/1.0.2 代码切到自己分支并且和远程分支建立联系
git add . 提交之前必须操作:
git commit -m ‘sssss’ 进行提交增加介绍
git push origin HEAD:refs/for/1.0.22 提交到自己的分支
git checkout – . 把所有对别人的更改都撤销还原
之后查看自己提交代码然后进行发链接 +1 之后自己 +2 提交即可完成一次完整的代码提交功能
当提前发生冲突时,需要找到冲突的地方判断那些是需要保留的,哪些不需要可以直接删除(询问对方)
一般在提交代码的时候一定要留意是否是自己更改的代码,一般来说我们不介意擅自修改他人的代码,避免因为他人的误操作造成代码问题,还有本地代码一定要自我测试无问题通过之后方可提交贷远程,其中主要步骤有:my 》change》点击
通过git命令提交代码之后,我们可以在git上面看到自己刚提交的代码(一般最直接和靠谱的方式就是根据版本号来区别)
之后需要将 直接记录点开赋值地址发给组长或者上级进行加一操作,之后自己进行加2
下面主要说一些如何对比自己提交之后和提交之前做过的本地代码修改和不同
查询我们代码有哪些不同直接使用git diff可以进行查看对比
可以通过命令history进行查询自己之前所有的提交命令
可以之间在IEDA中点击图标 show history进行对比即可
关于git使用创建版本库:
$ mkdir learngit
$ cd learngit
$ pwd (用来显示当前目录)
/User/michael/learngit
在windows下使用一定要保证我们的目录名(包含父目录都不能包含中文)
git init 命令可以吧目录编程git可以管理的仓库
$ git init 可以直接吧仓库建好 建成一个空的仓库,同时多了一个.git目录,但是一般默认是隐藏的。我们不能随意进行更改,保证git 仓库不被破坏
使用 ls -ah可以看到隐藏的文件
使用windows我们必须保证使用notepad++来保证使用utf-8保证字符编码,记事本傻的会导致编码问题
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;
第二步,使用命令git commit,完成。
git status查看仓库当前的状态
git diff查看我们修改的地方 (后面加上文件的名称就可以进行精确确定)
要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容
我们可以使用 git log来查看我们之前的历史操作 可以加上--pretty=oneline 可以版本号
返回上一版本 git reset -hard HEAD^
git reset -hard 版本号(可以回到某一个版本号(不一致完全写全))
在此进行返回回退的代码是 git reflog 查看版本号 可以再次进行回退
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
版本库:工作区有一个隐藏的目录.git 这是版本库不属于工作区
工作区:就是我们一般说的workspace
我们创建git版本库时,git自动为我们创建了屋内一个master分支,所以,当执行
git commit操作就是网master分支提交更改
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:
git的文件必须添加add到stage暂存区才能被提交到 commit中master
git checkout -- file可以丢弃工作区的修改:后面加上修改的文件名称
在我们修改了文件的内容,我们使用 修改之后没有提交到暂存区,我们直接进行撤销卡就可以恢复贷以前的版本
在我们进行修改并且提交到暂存区,又做了修改,现在撤销之后回到添加到暂存区之后的状态
撤销命令 git checkout --文件名 就是撤销到git commit git add 时的状态
git如何撤销添加的文件
git add test.txt
git commit -m "add test.txt"
当我们不小心吧文件删除 rm test.txt
这时候有两种操作直接进行删除该文件 直接执行github commit操作即可
可以使用撤销 git checkout -- test.txt 恢复之前删除的版本号
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
创建dev分支,然后切换到dev分支
git checkout -b dev 相当于两条命令
git branch dev
git checkout dev
git branch 查看当前分支
git checkout master 可以直接切回master分支
git merge dev 吧dev分支的工作成果合并到master分支上
合并完成以后我们可以吧dev分支进行删除 git branch -d dev
git branch 查看剩余分支,只剩下master分支
创建与合并分支
阅读: 999264
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。
一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:
git-br-initial
每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长:
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
git-br-create
你看,Git创建一个分支很快,因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化!
不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:
git-br-dev-fd
假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:
git-br-ff-merge
所以Git合并分支也很快!就改改指针,工作区内容也不变!
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:
git-br-rm
真是太神奇了,你看得出来有些提交是通过分支完成的吗?
下面开始实战。
首先,我们创建dev分支,然后切换到dev分支:
$ git checkout -b dev
Switched to a new branch 'dev'
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev
$ git checkout dev
Switched to branch 'dev'
然后,用git branch命令查看当前分支:
$ git branch
* dev
master
git branch命令会列出所有分支,当前分支前面会标一个*号。
然后,我们就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行:
Creating a new branch is quick.
然后提交:
$ git add readme.txt
$ git commit -m "branch test"
[dev fec145a] branch test
1 file changed, 1 insertion(+)
现在,dev分支的工作完成,我们就可以切换回master分支:
$ git checkout master
Switched to branch 'master'
切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变:
git-br-on-master
现在,我们把dev分支的工作成果合并到master分支上:
$ git merge dev
Updating d17efd8..fec145a
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。
当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。
合并完成后,就可以放心地删除dev分支了:
$ git branch -d dev
Deleted branch dev (was fec145a).
删除后,查看branch,就只剩下master分支了:
$ git branch
* master
因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
合并分支冲突:用git log --graph命令可以看到分支合并图。
谢谢大家一起共勉,愿每个人的努力都能有所回报!2018/2/23/ 19:51