
由于之前一直使用svn,现在项目使用git,顾根据网上找的学习资料,自己梳理了下,收获蛮多,这里做个记录,如果能帮助到您那是最好不过的。
1.大致步骤
使用工具:idea,github,码云
webstorm和idea由于都是一个公司的产品,操作手法基本一致,这里主要是讲idea
1.安装idea,下载git工具,idea中进行关联
2.在本机上生成公钥和私钥,然后在自己的github和码云账号上进行注册,这样才能把自己的项目上传上去。
3.在主分支master上进行git add,commit,push,pull等演示操作
4.模拟开个分支然后再合并主分支的操作
5.使用stash存储合并主分支
6.模拟一些特殊场景的报错解决方法
7.github和码云上传的介绍
8.本次学习git,github,码云所推荐您看的一些文章
2.git客户端下载
2.1 安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!打开Git Bash 命令行操作界面。

2.2创建ssk,获得本机的公钥和私钥
ssh-keygen -t rsa -C "youremail@example.com"

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人,目录就是上面的c:/users/sunjian/.ssh/id_rsa
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:





3.私钥公钥配置好了,现在上传到github的路已经打通了。
3.1在idea上新建一个springboot项目用来测试github

这步作用主要是可以把本地项目上传到github上面


现在就先把这个springbootdemo上传到github上面,然后在测试commit,add,pull,push




如何把本地修改的文件先放到本地库中再从本地库中去除


如果是新增文件夹,一定要把文件夹git add进去,光add文件也不行.







push完成,远程github服务器更新了


相当于git log这个指令


compare with 也是和最近一次线上版本进行比较,compare with branch是和分支上的代码进行比较.
show current revision 可以查看此次文件提交的版本号




竟然能够回退上2个版本,服务器上的没删,本地的回退了2个版本。那就要能够返回到最近那个版本。如何操作呢

另外由于回退到上2个版本了,黄色卡片(head)现在指向的是springbootdemo测试git和github,所以这个head就是一个版本的index下标


这个版本号也没必要写全,git是模糊搜索的,不写全可能会搜索出多个版本,你在选择其中一个版本即可





如果想把远程master分支上的TestDemo2也删除掉,先本地删除后,再commit changes到master分支,就可以删掉master分支上的TestDemo2



commit之后只是放到了暂存区,然后还需要push之后才能更新master分支的版本库,删除testdemo2






说明现在是在dev的分支上,我们现在git add,commit,push,先提交到自己的dev分支上























status20171227这个相当于是一个临时存储的id,需要记录,然后再右下角new branch,创建分支的时候吧status20171227记录上去即可
status和new branch普通分支的区别是:比如在master主分支基础上创建了一个status,那就是吧master主分支存储起来放到另外一个分支上去进行修改,改完以后在恢复到master上面进行合并。
new branch就如前面看到的,只是将master当中其中一部分已经commit的放到另外一个分支上去,不是master全部内容
这些操作只要commit即可,不需要push远程仓库,commit就是放在缓存区,然后本地合并完以后,再push到远程分支上。







接下来说下如何使用码云
首先要注册码云的账号密码,操作手法和github差不多,把公钥和私钥去码云那边注册。










总结:本次git学习推荐网站
使用WebStorm/IDEA上传本地项目到GitHub
廖雪峰的官方网站
本次学习的过程:一开始先通过本地git,git bash非图形化界面练了遍,然后再根据软件来操作,git里面有很多命令,软件当中的一些操作也是常用指令,如果满足不了需求,可以自己输入指令。下面是git一些常用指令。
创建文件夹: mkdir <name>
进入文件夹: cd <name>
显示当前目录: pwd
把当前目录变成Git: git init
显示隐藏目录: ls -ah
查看git仓库状态: git status
把文件添加到git仓库: git add <file name>
把文件提交到仓库: git commit -m "说明"
查看修改后的不同: git diff
查看提交历史: git log --pretty=oneline
回退到上一个版本: git reset --hard HEAD^
回退到某个版本: git reset --hard <commit id>
查看命令历史: git reflog
工作区和暂存区对比: git diff
暂存区和分区对比: git diff -- cached
工作区和分支对比: git diff -- <file...>
丢弃工作区的修改: git checkout -- <file...>
撤销暂存区的修改: git reset HEAD <file...> + git checkout -- <file...> 或 git reset --hard HEAD
删除工作区文件: rm <file...>
从版本库删除该文件: git rm <file...> + git commit -m "说明"
撤销工作区文件的删除: git checkout -- <file...>
撤销暂存区文件的删除: git reset HEAD <file...> + git checkout -- <file...> 或 git reset --hard HEAD
创建SSH Key: ssh-keygen -t rsa -C "15521232672@163.com"
关联一个远程库: git remote add origin git@github.com:RaymondHww/learngit.git
推送master分支的内容: git push -u origin master (第一次推送要参数 -u ,之后就不用了)
从远程克隆仓库到本地: git clone git@github.com:RaymondHww/gitskills.git
查看分支: git branch
创建分支: git branch <name>
切换分支: git checkout <name>
创建+切换分支: git checkout -b <name>
合并某分支到当前分支: git merge <name>
删除分支: git branch -d <name>
查看分支合并情况: git log --graph --pretty=oneline --abbrev-commit
使用普通模式合并: git merge --no-ff -m "说明" dev
把工作现场储藏: git stash
查看储藏的工作现场: git stash list
恢复储藏的工作现场: git stash apply stash@{0}
删除stash内容: git stash drop stash@{0}
恢复并删除stash内容: git stash pop
强行删除未合并的分支: git branch -D <branch_name>
显示详细的远程库信息: git remote -v
推送分支到远程库: git push origin master 或 git push origin dev
克隆远程库到本地后只有master分支
在本地创建和远程分支对应的分支:git checkout -b branch-name origin/branch-name
建立本地分支和远程分支的关联: git branch --set-upstream branch-name origin/branch-name
因此,多人协作的工作模式通常是这样:
首先,可以试图用git push origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,
用命令git branch --set-upstream branch-name origin/branch-name。
tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。
打一个新标签到最新的提交上: git tag v1.0
打一个新标签到历史的提交上: git tag v1.1 <commit-id>
查看所有标签: git tag
查看标签信息: git show v1.0
创建带有说明的标签: git tag -a v1.2 -m "说明" <commit-id>
通过-s用私钥签名一个标签: git tag -s v1.3 -m "说明" <commit-id>
删除本地标签: git tag -d v1.0
推送某个标签到远程: git push origin <tag-name>
一次性推送全部尚未推送到远程的标签:git push origin --tags
删除已经推送到远程的标签: git tag -d v1.0 然后 git push origin :refs/tags/v1.0
关注我的公众号,都是满满的干货!

网友评论