笔记为自己在学习理解git时的记录与总结
概念理解
HEAD指向master,master指向实际的提交
-
冲突
两个分支都对同一份文件进行更改后,合并(merge)时会发生。 必须手动解决冲突。
基本操作
-
显示分支合并图
git log --graph git log --graph --pretty=oneline --abbrev-commit
-
Fast Forward
合并分支时,通常情况下Git会使用Fast Forward模式,该模式是直接将master指向该分支。
这样删除分支后会丢掉分支信息。使用 --no-ff方式的merge git merge --no-ff -m "merge with no-ff" dev
-
添加并切换分支
git checkout -b gh-pages
-b
选项表示切换到新创建的分支 -
删除分支
git branch -d branch1
-
关联远程仓库
git remote add origin https://gitee.com/itaiit/learnGit.git
-
一个本地仓库可以关联多个远程库,此时以不同的名字区分
-
关联github仓库
git remote add github https://github.com/itaiit/learngit.git
-
关联gitee(码云)仓库
git remote add gitee https://gitee.com/itaiit/learnGit.git
-
-
推送
-
推送到github
git push github master
-
推送到gitee
git push gitee master
-
-
-
查看关联的远程库的信息
git remote -v
-
删除关联的远程仓库
git remote rm origin
-
忽略特殊文件.gitignore文件
github提供的.gitignore文件 https://github.com/github/gitignore
有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示
Untracked files ...
-
检查.gitignore文件是否有问题
git check-ignore
-
-
使用ssh
-
在windows下可以使用http的方式,而不需要每次push都需要验证,但是在linux下,每次向github进行push时都要求输入用户名密码…
ssh-keygen -t rsa -C "[email protected]"
-
测试连接:
ssh -T [email protected]
,没错就是“[email protected]"然后直接输入yes,即可。
后面如果在使用中出现错误,请参考git从本地添加到github远程库失败的解决方法
-
修改.git/config
进入当前repository的.git目录(该目录是隐藏目录),修改config文件
将该处的url换为你对应的github中ssh的url:
此时,在linux下每次提交就不需要输入用户名和密码了。
-
错误记录
RT ! [rejected] master -> master (fetch first)
原因没有同步远程的master分支,执行 “git pull origin master”,这里貌似都不推荐使用pull,而是拆分成两步:fetch和merge
团队中常用的开发模式
在实际开发中,我们应该按照几个基本原则进行分支管理:
-
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
-
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
-
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
-
参考