git入门

前言:在公司实习会使用git,总结一下使用git的学习过程与遇到的问题。

参考:https://blog.csdn.net/u010059669/article/details/82670484

参考:https://segmentfault.com/q/1010000009549291
参考:https://blog.csdn.net/kikajack/article/details/79846098

参考:https://blog.csdn.net/huangjw_806/article/details/78297851

参考:  https://blog.csdn.net/Lucky_LXG/article/details/77849212

目录

第一章 将本地git与远程git项目同步

第二章 在远程新建分支并与本地分支建立联系

第三章 合并分支

第四章 解决冲突

第五章 解决问题

5.1 解决git pull时遇到的冲突

5.2 拉取远程指定分支到本地并提交

5.3 解决Pulling is not possible because you have unmerged files

5.4 退回版本并在远端新建分支与之对应


第一章 将本地git与远程git项目同步

1.1 使用git clone同步

在远程新建项目

创建本地文件夹

在本地文件夹中右键打开git bash here,输入

git clone <项目url>

项目被拉取到了本地,

在拉取的项目中进行修改,并上传

修改:新建文档new

查看状态:

上传:

git add将文件添加到暂存区

git commit在本地提交修改

将本地修改提交到远程

git push <项目url>将项目推送到github上。 

远程多出了new.txt 

第二章 在远程新建分支并与本地分支建立联系

参考:https://blog.csdn.net/huangjw_806/article/details/78297851

在远程新建分支mysql

git branch新建本地分支:

 切换到分支mysql

 修改本地文件并 add 且commit

提交到远程指定分支mysql:

git push origin mysql

参考:https://blog.csdn.net/u010059669/article/details/82670484

查看远程,提交成功

1.2 使用git init同步

参考:https://blog.csdn.net/Lucky_LXG/article/details/77849212

现在我要把如下的项目上传到自己搭建的git上.

首先在frameio下使用git init把这个文件夹变成Git可管理的仓库,可以看到文件夹下多了.git文件.

然后我们通过git add, git commit将项目提交到本地的仓库上.

创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录,有的话看下里面有没有id_rsa和id_rsa.pub这两个文件,有就跳到下一步,没有就通过下面命令创建

ssh-keygen -t rsa -C "youremail@example.com"

 然后一路回车。这时你就会在用户下的.ssh目录里找到id_rsa和id_rsa.pub这两个文件.

id_rsa与id_rsa.pub一个是私钥一个是公钥,我们将公钥id_rsa.pub复制到git网站上,这样我们每次有git请求时,便会将我们电脑中的密钥id_rsa与git网站上的id_rsa.pub进行匹配,如果能匹配上,就能进行相应的git请求如上传等等.值得注意的是这样的是SSH方式,如果是HTTP方式是输入git网站的账号密码即可.

将id_rsa.pub中的内容复制到SSH密钥中,我这里不是github,github的添加方式可以看本节的参考.

添加完后将本地仓库与远程仓库进行关联

 

 

 

 

第三章 合并分支

查看当前分支:

master分支下的文件: 

 mysql分支下的文件:

切换到主分支然后合并

发现冲突

 自定义修改并上传文件

 

发现远端被修改

同时也发现合并分支并不会删除分支,远端的mysql与本地的mysql都存在,且其中的内容都没有改变。所以合并分支并不是将两个分支合并成一个,而是将另一分支的代码与当前分支代码合并,也仅仅是代码合并,从我的观测结果来看代码也没有在分支合并的时候进行自动提交,合并后还是要自己add commit push

第四章 解决冲突

参考:https://segmentfault.com/q/1010000009549291

我们提交了项目代码,此时项目为A,

别人又提交了项目代码,此时为B,

我们再提交就会显示冲突,假设我们提交的代码为C,如果直接提交C会覆盖掉B。

所以我们要在本地 add commit 代码之后,pull拉取远端的代码B(pull操作会让B与C在本地merge),然后再push就可以了

在本地add与commit是为了告诉git自己修改了代码,不然pull代码的时候会把自己本地写的代码覆盖。

 

第五章 解决问题

5.1 解决git pull时遇到的冲突

解决git 遇到的问题,今天想从网上拉取一个git项目下来,但是总是提示冲突。

但是提示,两个文件冲突,即 .idea/misc.xml与 .idea/personalized-push-back.iml冲突。

想到.idea这个文件夹没啥用,是可以的删除的,我决定直接删除,然后继续pull。

然后继续报错

我看到error的提示中有一句话 

Please commit your changes or stash them before you merge

提示让我commit我的change,然后我就想是否我已经add了代码,所以即使我删除了冲突文件也还是不能pull

于是从网上找到了git status来查看状态:

看到了有Changes to be committed,按照网上的意思来说:

对于还没add的新增文件文件,状态是 Untracked files

对于还没add的修改,状态是Changes not staged for commit:

已经add了的修改的状态是 Changes to be committed。

已经add了的新增文件是 Changes to be committed

所以我这里要撤销对misc.xml文件的add,参考:https://blog.csdn.net/kikajack/article/details/79846098

输入 git reset -- .idea/misc.xml,发现对misc.xml文件的修改已被修改为未add的状态。

最后要将misc.xml的修改撤销

输入git checkout .idea/misc.xml (记得checkout不是切换分支么?以后再看看),发现修改已被撤销。

继续pull,成功!

 Your local changes to the following files would be overwritten by merge: .idea/misc.xml
 

5.2 拉取远程指定分支到本地并提交

之前对远程分支拉取是这样的:

首先commit自己的修改,然后pull 远程的分支与自己写的分支合并,最后将合并后的代码push到远端。

参考的是:https://segmentfault.com/q/1010000009549291

之前对指定的远程分支提交是这样的

git push origin <本地分支名>

参考的是:https://blog.csdn.net/u010059669/article/details/82670484

可以看到我当前是指向的mysql分支,具体匹配关系如下。

我先将自己写的代码进行commit

拉取远端mysql分支的代码

git pull origin <远程分支名>

将本地的代码推送到远端

同步成功。

关于origin的含义留待下回再学。

5.3 解决Pulling is not possible because you have unmerged files

拉取内容再提交时提示

于是再pull发现

使用git status,发现有未合并的文件

打开文件手动合并后,继续add,add后发现Unmerged paths已消失。

然后继续像以前一样,commit,push就行了。

5.4 退回版本并在远端新建分支与之对应

       在实验室写项目,师兄多写了点前端,本应是我后端对应写完然后提交,但是因为有个BUG要急着修复,没时间补完对应的前端,所以我把项目推到最新之后,便退回之前的版本,并在远端建立了一个临时分支与之对应,等有空的时候再与之merge.

我打算跳回的版本.

首先在远端新建分支temporaryBranchForDownloadBug

本地新建分支temporaryBranchForDownloadBug,并切换到此分支

找到我们要退回的版本号

退回版本: 

上传至远端,已将当前版本强制推送到了远端.

远端查看,成功!

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值