- git首次创建仓库提交
- git新建本地分支提交到远程
- git 冲突解决
- git回退
1 git首次创建仓库提交
-
在gitHub上创建仓库
-
项目名称-Team-Share Project…
右击项目,选择Team,选择Share Project
-
在Configure Git Repository窗口,点击“User or create repository in parent folder of project”,然后点击“Create Repository”,新建一个本地仓库,点击Finish。
此时,项目中可以看到很多问号,表示有文件需要提交:
注意:这里一定要选择"create the Repository in the parent folder of the project……",否则,git会把整个Test目录放在gitHub的MyUtils目录下,就是一个Test目录又嵌套另一个Test目录加粗样式 -
项目右键,Team。Commit
将项目增加到暂存区,增加注释,Commit and Push,具体操作如下图所示:
-
这时候会弹出一个Destination Git Repository窗口,如下图所示,填写信息,其中URI为步骤1中在gitHub上创建仓库的地址,然后点击Next,然后点击Finish
- 自动选择了master,点击Finish
2 git新建本地分支提交到远程
2.1 场景
假设我们本地仓库分支为origin,远程仓库只有master分支,我们需要一个dev分支,我们需要在本地先创建dev分支,之后同步到远程仓库,具体步骤如下。
2.2 步骤
-
点击Team,然后选择Swtich To,然后选择New Branch,会弹出Create a new branch对话框,在对话中填入我们的分支名称,此处我们起名为dev分支,如下图所示:
-
点击完成,创建完新分支,会自动切换到分支上dev,此时远程仓库还没有我们新建的dev分支,只有本地仓库有
-
将本地创建的dev分支,推送到远程仓库,点击Team,然后选择Push Branch ‘dev’…,会弹出Push to branch in remote对话框,填写远程分支名称,点击Next,然后点击Finish即可
-
查看远程分支,会多一个dev分支
3 git 冲突解决
3.1 场景
- 假设我们项目组同时有A、B个人在同一分支上修改同一个文件,当A提交过文件,B在去拉去会失败,产生冲突。
- 假设我们项目组同时有多个分支dev、master,并且在这两个分支上有同一文件被修改,并且dev已经提交。当我们需要把dev合并到master,怎么操作
3.2 步骤
场景3.1 中的1
一下都是基于dev分支
-
模拟A:直接在gitHub上修改文件,
我们在代码Test.java中增加注释“修改1”,如下图所示,并且提交该文件
-
模拟B:我们在本地Myeclipse中修改文件
我们在代码Test.java中增加注释“修改2”,如下图所示
-
然后我们在myeclipse中Team->Pull项目,这是会弹出如下对话框,标示为冲突
-
将本地修改的代码放在缓存区,选择Team-> Stashs -> Stash Changes…,会弹出对话框,填写暂存名称
-
然后在才在项目向Team-> Pull,从远程仓库拉取最新代码,拉取成功后
-
从缓存区将修改的代码取出,点击暂存出栈并移除,
-
这样最新代码跟本地修改的代码就会混杂在一起, 手工解决冲突后, 提交解决冲突后的代码。
场景3.1 中的2
切换到master分支,修该Test文件,提交文件,然后点击Team->Merge选择dev分支合并
4 git回退
我们先了解一些概念:
git reset
- git reset (–mixed) HEAD~1
回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也
不受影响) - git reset –soft HEAD~1
回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响) - git reset –hard HEAD~1
回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换 - 暂存区回退操作
如果Test.txt文件已经被git add添加到了暂存区中,想要将该文件回退到工作区(Working Directory)的话,则使用git reset HEAD Test.txt,则将修改后的文件回退到了未被add的状态 - 工作区回退操作
如果Test.txt文件已经被改得乱七八糟了,想要把这个文件回退到最近一次更新的代码的话,则需要使用git checkout – Test.txt将该文件回到与HEAD的状态
4.1 步骤
-
点击Team-> Reset
-
选择需要回退到那个远程分支
5 git diff
#比较本地和暂存区的差异
git diff
#比较暂存区和本地仓库的差异
git diff --cached
#比较本地和本地仓库的差异
git diff Head
#比较本地仓库前一次commit和最近commit的差异
git diff Head^ Head
#比较本地仓库前一次commit和最近commit的差异(只显示文件不显示细节)
git diff Head^ Head --stat