如何使用 Git
一、克隆
1.在目录/project 上右键选择Git Bash Here,或者cmd,powershell都可以执行命令;
2.输入命令git clone https://github.com/lingdian-ah/MainPage.git;
//会将该项目克隆到当前目录下,/project/MainPage
二、Git使用步骤
开始学习
// 切换到项目文件夹下执行命令
1.touch readme.md // 创建readme.md文件,也可自己手动新建一个文件:鼠标右键新建文件
2.git init // 初始化,创建本地git仓库,仅执行一次
3.git add README.md // 将文件添加到仓库中,git add . 表示添加所有文件到本次仓库,.点和*星号一个意思,表示全部(每次修改时需执行该命令)
4.git commit -m "first commit" // 提交,并输入本次更改信息
//注意:也可以执行命令:git commit -a -m "本次更改内容" 表示提交所有更改文件,该命令等同于3,4步骤
5.git remote add origin http://gogit.qyvip.com/lingdian/mango.git // 添加远程仓库,如果不换仓库,只需执行一次
6.git pull origin master // 拉取内容,如果知道没有人更新过,可以不执行(此处为master主分支,也有可能是其他分支)
7.git push -u origin master // 上传本次更改的内容,后面是分支,此处为master主分支,也有可能是其他分支
合并分支
场景:分支master,branch1,branch2
1.为了解决master上的 bug1,创建了分支 branch1,在该分支上进行修改;git checkout -b branch1
2.为了解决master上的 bug2,创建了分支 branch2,在该分支上进行修改;git checkout -b branch2
3.当 bug1 解决后,需要把 branch1分支上的内容合并到master上,执行命令:
git checkout master // 先切到master分支
git merge branch1 // 将branch1合并到master,此时由于没用其他人调整,不存在冲突
4.此时为了解决 bug2,已经在branch2上进行了多次修改提交,目前以解决该bug,假设解决bug1和bug2都修改了文件demo.java
5.现在进行最终合并,执行命令:
git checkout master // 同样的需先切到master分支
git merge branch2 // 将 branch2 合并到 master,由于和branch1修改了同一个文件,此时会存在冲突
git status // 查看状态,输出:...略 Unmerged paths: ...略 demo.java
git mergetool 或者 vim 文件名// 使用工具处理冲突,会提示你输入工具,可以直接回车,使用默认工具处理,工具中会体现文件差异等信息
git commit -a -m "merge branch2"// 解决冲突后,进行提交
git push origin master // 进行push,然后你可以在github上查看提交记录,已经文件内容是否正确,这样就ok了
三、常用命令
远程地址相关命令:remote
1.添加远程地址
git remote add origin 地址 // origin:自定义,远程地址名称,地址:为github项目的地址
2.删除远程地址
git remote remove origin // origin:要删除的地址
3.修改远程地址
git remote set-url origin 新地址 // origin:远程地址名称,新地址:新的github项目地址
4.查看远程地址
git remote // 查看名称
git remote -v // 查看详情,名称+地址
分支相关命令:branch、checkout
1.创建分支
git branch 分支名称 // 分支名称:新建的分支名
2.切换分支
git checkout 分支名称 // 分支名称:要切换的到的分支名
3.创建分支并切换到该分支
git checkout -b 分支名称 // 分支名称:新建的分支名
git checkout -B 分支名称 // 创建/重置分支,并切换到该分支
4.查看分支
git branch // 查看分支名称
git branch -v // 查看分支详情,名称+最后提交记录
git branch -a // 查看所有分支:包含远程和本地分支
git branch --merged // 查看哪些分支已经合并到当前分支上,*表示当前分支
git branch --no-merged // 查看哪些分支还未合并到当前分支上,*表示当前分支
5.删除分支
git branch -d 分支名称 // 分支名称:要删除的分支名
重置命令:reset
1.将文件还原为上次提交时的状态(前提是该文件是未提交状态)
git checkout -- 文件名称
2.若文件已添加到本地仓库,修改为未添加
git reset HEAD 文件名称 // 可以通过git add 文件名称 再次添加文件到本地仓库
日志、记录:log、diff、status、show
1.更新记录
git log // 查看提交记录,输入q退出
2.显示本次更改文件中改动的内容
git diff
3.显示当前状态,可以看到哪些文件更改了 ( 经常使用的一个命令 )
git status
4.显示最后一次的文件更改情况
git show
IDEA Git 开发
分支a合并到master
通常情况下master主分支上是不做修改的。自己新建一个分支,在分支上进行修改,修改,测试好之后,再与主分支进行合并。
情况说明:现有分支master,分支a。在分支a上做了修改,想要和master主分支进行合并。大致步骤如下:
1.在分支a上修改后,需进行提交commit、上传push→到分支a上;
2.idea右下角,Local Branches栏目:选中master,checkout切换到master主分支上;
3.然后同样在idea右下角,Remote Branches栏目:选中分支a,Merge into Current;
4.此时还是在master主分支上,然后进行commit、push操作,这样master上的代码就更新了;
pull拉取失败,又无法提交的解决办法
思路:先将本地修改在git栈中保存起来,这样本地修改就被清除了,此时我们再从远程分支上pull拉取,就可以了。拉取成功后,再将git栈中保存的修改释放出来,如果有代码冲突,可进行merge操作。合并完成后,再进行commit、push完成更新。
1.选择Stash Changes...,后输入message(此次Stash的说明),最后进行创建(点击Create Stash);
2.从远程拉取,执行pull;
3.选择Unstash Changes...,选中刚刚保存的Stash,并勾选Pop Stash(意思是把这个stash记录清除),最后点击Apply Stash;
4.此时可能会出现代码冲突,弹出代码冲突窗口,我们点击merge...,进行手动合并;
.gitignore规则不生效的解决办法
idea可以下载一个插件.gitignore,方便管理
把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交:
git rm -r --cached . //注意后面有个点
git add . //注意后面有个点
git commit -m "update .gitignore"
idea出现merging 分支a 的解决办法
如何终止git merging状态
在idea控制台输入:
git merge --abort //此时右下角就变为了正常的分支状态
错误
push rejected
情形:我在github上创建了一个仓库与本地项目名称相同,包含了README.md文件。本地项目也包含了README.md文件。在本地项目上创建了本地仓库,添加了远程链接。commit成功,push时出现这个问题。
解决:执行下面的命令,然后再push就成功了
// 允许合并不相关历史的内容
git pull origin master --allow-unrelated-histories