关于Git学习的一些命令(二)
跟的上面的走;
在A下模拟A程序员写的代码
touch main.java
vim main.java
在main.java中写数据用来模拟A的代码
git add main.java 或者 git add .
git commit -m "这是A第一次写代码"
git push
A的事情做完了;切换到B目录下
B下在窗口Git clone 远程仓库的地址
B程序员操作main.java这个文件, 用来模拟多人共同开发
也是git add .
git commit -m "B第一次写代码"
git status
git push
好的. 到这里一切正常; 我开始要制造冲突了
切换到A目录下, 因为A忘记git pull, 从而直接编写main.java继续开发
同样 git add . 或者 git add 文件名
git status --------- 每次commit前 看看status, 这是个好习惯. 能避免很多坑
git commit -m "这是A第二次提交"
问题来了 git push 不了 报异常了 我们来看看异常
提示的很明显 只要看一个单词就好 [ rejected ] --- 冲突
--------------------------------------------------------------------------
好, 现在我们开始解决冲突
先拉下最新的代码 git pull
然后git status 看看文件状态 ,哪个文件起冲突了; 这很重要
好的,我们发现了这个文件; both modified: main.java
确立了问题文件就好办了; 进入编辑页面
vim main.java
发现文件是这样的, 解释一下 = 号是区分俩个程序员A.B的代码
修改代码,把冲突解决一下;
变成这样; 别闹, 我这是演示;
同样 git add . 或者 git add 文件名
git commit -m "解决冲突"
git push ---- 现在push 就没任何问题啦
最后我们看看日志 git log
很好, 完成; 毕竟是本地模拟. 所以我现在讲讲从gitHub,码云,coding.net下拉取代码来模拟公司实际开发
实际上和上面二章所说一样; 只是些许不同
创建项目 --- 这一步是项目经理做的; 注意上图的忽略文件; 他有了,我们就不用再写忽略文件了;
拷贝那个URL; 如果配有公钥的点SSH.这样不用输密码; 怎么配公钥我下一章讲解
创建一个目录.用来作为此项目的根目录
git clone [email protected]:a819047638/shuaige.git 这个网址就是上面的网址
然后剩下的步骤基本和上面讲的一样; 我就不写了
现在我只是在上面克隆 ; 那如果我有项目,只是没有在gitHub,coding.net下;那怎么办呢;
我们再次模拟一下
新建一个本地git库
git init
代码阶段, 忽略,和上面一样
git remote add origin xxxx 这xxxx指的是你的URL,就是你在创建gitHub.coding.net项目下的URL ;
例如 上面的[email protected]:a819047638/shuaige.git 这里我讲下, git remote add origin 这个命令是指将本地库和远程库合并
如果是第一次push的话 git push -u origin master
为什么要这么做呢?
因为git pull,实际上是把当前分支master推送到远程; 但是远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令
以后提交 就只要git push origin master 就好了;
好了,现在模拟git完成; 下次写写分支,
最后, 我来说说我自己的感悟吧;
因为现在开发工具越来越智能化; 也越来越能节约程序员的时间; 像我以前都是直接工具上下载插件,然后无脑操作; 虽然也能达到目的,但是却涉及不到东西的根本; 不清楚数据怎么来的,不知道为什么要这么做;这实际上是种误区; 所以我想说,
不要因为简单, 就忽略了本质; 不要因为困难, 就畏惧不前; 不忘初心,方得始终; 每一步,都是成长的脚印;
如果我写的哪里有问题, 欢迎大家来指正; 谢谢了