git使用记录学习

一、Git使用基本操作

配置环境:
1、通过git init命令把某个目录变成Git可以管理的仓库;
2、生成公钥秘钥:ssh key ssh-keygen -t rsa -C “for example@163.com”(邮箱)
3、在GitHub的Setting中配置公钥
3、 关联远程gith的用户名和邮箱
$ git config --global user.name “Your Name”
$ git config --global user.email “email@example.com”
操作:
在这里插入图片描述

1、从分支上拉取远程库的内容:git pull origin dev(分支名称)
2、对项目就行修改
3、把修改后的项目add到本次分支:git add .
4、把本地分支的内容提交到暂存库:git commit -m “注释”
5、把暂存库的内容推送到远程库:git push -u origin dev(分支名称) //前提:在哪个分支目录下就往哪个远程分支推送
6、切换到主分支master:git checkout master(名称)
7、合并分支:git merge dev(分支名称)

删除本地分支:git branch -d [branchname]
删除远程分支: git push origin --delete [branchname]
创建分支 :git checkout -b [branchname]

二、 远程仓库中分支存在

方法一:(已经创建了本地分支)
git branch --set-upstream-to=origin/remote_branch your_branch
//等同于

git branch -u origin/remote_branch your_branch
方法二:(本地分支不存在,本地名称与远程名称不同)

复制代码
git branch new_branch origin/remote_branch
// 或者
git fetch origin remote_branch:new_branch
// 上面👆这两种方法都不会切换当前分支;

// 如果想要创建分支的同时,切换到新分支
git checkout -b new_branch origin/remote_branch
复制代码
方法三:(如果本地有远程分支 origin/name, 想拉取一个本地分支)

// git默认将创建一个同名本地分支,并将本地分支和远程仓库关联
git checkout remote_branch

远程分支不存在
// 如果远程仓库不存在new_remote_branch,将创建一个该分支,并关联local_branch
git push origin local_branch:new_remote_branch

三、git 为什么要先commit,然后pull,最后再push?而不是commit然后直接push?

1,那我本地这个也算是个分支?还是就是一个本地仓库?
**答:**本地和远程的关系相当于两个分支,你感觉一样是因为你git pull 的时候已经自动给绑定好对应关系了, set-upstream…balbala

2,如果我在远程新建了个分支,然后我pull了下来,那我本地到底有分支这个说法吗?我本地的分支是不是就是那个远程新建的分支?
**答:**你远程新建了一个分支拉到本地的道理是一样的,属于复制了一份,但是本地分支和远程分支已经是两个东西了

3,本地仓库和本地分支有什么区别?
**答:**本地分支属于本地仓库里,是包含关系,一个仓库里可以有很多分支

4,commit是提交到本地仓库,然后push,这个push是把所有代码推到远程仓库,还是只是把commit的地方推到远程仓库?
**答:**肯定不会全量推送到远程的,是通过对比 commit 的记录,如果本地高于远程就直接把多出来的commit 给怼上去,如果本地分支的最新版本和远程的 commit 有冲突,就需要解决冲突。

5,那为什么要先commit,然后pull,然后再push,我pull了,岂不是把自己改的代码都给覆盖掉了嘛,因为远程没有我改的代码,我pull,岂不是覆盖了我本地的改动好的地方了?那我还怎么push?
**答:**这个先 commit 再 pull 最后再push 的情况就是为了应对多人合并开发的情况,
commit 是为了告诉 git 我这次提交改了哪些东西,不然你只是改了但是 git 不知道你改了,也就无从判断比较;
pull是为了本地 commit 和远程commit 的对比记录,git 是按照文件的行数操作进行对比的,如果同时操作了某文件的同一行那么就会产生冲突,git 也会把这个冲突给标记出来,这个时候就需要先把和你冲突的那个人拉过来问问保留谁的代码,然后在 git add && git commit && git pull 这三连,再次 pull 一次是为了防止再你们协商的时候另一个人给又提交了一版东西,如果真发生了那流程重复一遍,通常没有冲突的时候就直接给你合并了,不会把你的代码给覆盖掉
出现代码覆盖或者丢失的情况:比如A B两人的代码pull 时候的版本都是1,A在本地提交了2,3并且推送到远程了,B 进行修改的时候没有commit 操作,他先自己写了东西,然后 git pull 这个时候 B 本地版本已经到3了,B 在本地版本3的时候改了 A 写过的代码,再进行了git commit && git push 那么在远程版本中就是4,而且 A 的代码被覆盖了,所以说所有人都要先 commit 再 pull,不然真的会覆盖代码的

6,两个分支A和B,A合并B和B合并A,有区别吗?
**答:**两个互相合并的唯一区别就是 A->B 的时候 B 分支上会产生一个 merge_commit ,被改变的分支是 B ;如果现在没有发生任何改动执行 B->A ,则A和B两分支才会完全相同。

一般工作流程如下:

1、git clone 克隆远程资源到本地目录,作为工作目录;
2、然后在本地的克隆目录上添加或修改文件;
3、如果远程修改了,需要同步远程的内容,直接git pull就可以更新本地的文件;
4、本地在修改之后,可以通过git status 查看修改的文件。然后使用git add 添加修改的文件暂到缓冲区;
5、在添加之后,可以使用git commit添加到当前的工作区;
6、在修改完成后,如果发现错误,可以撤回提交并再次修改并提交;
7、git push将本地的修改推送到远程的git服务器

git 工作流程

一般工作流程如下:

1、git clone 克隆远程资源到本地目录,作为工作目录;

2、然后在本地的克隆目录上添加或修改文件;

3、如果远程修改了,需要同步远程的内容,直接git pull就可以更新本地的文件;

4、本地在修改之后,可以通过git status 查看修改的文件。然后使用git add 添加修改的文件暂到缓冲区;

5、在添加之后,可以使用git commit添加到当前的工作区;

6、在修改完成后,如果发现错误,可以撤回提交并再次修改并提交;

7、git push将本地的修改推送到远程的git服务器。

分支操作:

1、查看分支:

git branch -a

2、创建分支,加上-b上创建完分支后,切换的新的分支工作:

git checkout -b dev

这时候修改的文件都是在dev分支,不会对master分支的文件进行修改。

3、合并分支

git checkout master

git merge dev

如果有冲突会有提示,默认是添加两个分支文件里面的内容,然后Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,修改冲突的文件,然后git add修改后的内容就可以继续提交了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值