git到github的步骤操作配图(baomu级)

本文详细介绍如何使用Git进行分支管理,包括新建文件夹、初始化Git仓库、设置SSH密钥、上传代码到GitHub、创建及合并分支等操作流程。适用于初学者快速上手。

目录

零.简版:(如果不是只是找命令,请详细从一.开始看,防止造成错误导致心态炸裂)

一.新建文件夹--->打开git Bash Here-->输入git init

正常情况如下:

 不正常情况:

问题1:promise deny  

解决:右键属性--->安全-->权限全部打钩--->编辑--->应用-->再输一次git init

(如果master出现就继续往下二.)

问题2:Reinitialized existing Git repository

解决:直接git add .---->根据英文提示操作( 如git config --global --add safe.directory Z:/WeChat_develop/test3/sportmini)便出现master

二.将文件保存到本地仓库

输入git add . 将文件添加到本地仓库中

 如果一切顺利就继续往下,如果出现问题解决问题,目前本憨还没遇到问题

三.创建github仓库(若已经创建则继续四.)

 四.为github仓库设置秘钥(如果已设置就继续五.)

目的:设置秘钥让每次上传不用每次都要输一次账号密码,就是一切为了安(fang)全(bian)

4.1设置ssh密钥

首先检查是否已生成密钥 cd ~/.ssh,ls如果有3个文件,则密钥已经生成,id_rsa.pub就是公钥​编辑如果没有,输入: ssh-keygen -t rsa -C “你的邮箱”​编辑输入 clip < ~/.ssh/id_rsa.pub 会自动复制ssh key,可以直接粘贴​编辑4.2打开GitHub 进入setting找到ssh key并新建

 4.3测试连接是否成功

五.将本地仓库代码上传到GitHub

5.3提交代码到GitHub

六.建立远程分支(maste以为的分支,为分支操作做准备)

6.1我们先看看我们目前有哪些分支和分支状态:

6.2新建远程分支

新建一个本地分支:

​编辑

 6.3把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):

首先要连接远程库:

​编辑

//使用git branch -a查看所有分支,会看到remotes/origin/localbranch这个远程分支,说明新建远程分支成功。

6.4如图所示远程仓库已经创建了v1分支 下面也有代码上传上去了。

6.5将远程git仓库里的指定分支拉取到本地(本地不存在的分支)

 6.6删除远程分支

七.分支的合并


零.简版:(如果不是只是找命令,请详细从一.开始看,防止造成错误导致心态炸裂)

上传一个本地的独立分支
1、git init (初始化环境,生成.git环境)
2、git add . (讲文件添加暂存区)
3、git commit -m “描述信息” (提交暂存区文件)
4、git branch 分支名称 (创建本地分支)
5、git checkout 分支名称 (切换到本地分支)
6、git remote add origin 远程仓库地址 (关联远程仓库)
7、git push origin 分支名 (推送本地分支到远程仓库)

上传本地仓库到远程仓库指定分支
1、创建本地文件夹,并在次文件夹处打开Git Bash
2、git init (初始化环境,生成.git环境)
3、git remote add origin 远程仓库地址 (连接远程仓库)
4、git pull origin 远程仓库分支名 (拉取远程仓库指定分支)
5、git checkout --track origin/远程仓库分支名 (追踪远程仓库分支,与本地仓库建立联系)
6、在本地仓库中添加文件或修改文件
7、git add . (讲文件添加暂存区)
8、git commit -m ‘描述信息’ (提交暂存区文件)
9、git push origin 远程仓库分支名 (推送到远程仓库指定分支)


一.新建文件夹--->打开git Bash Here-->输入git init

正常情况如下:

 

 不正常情况:

问题1:promise deny  

解决:右键属性--->安全-->权限全部打钩--->编辑--->应用-->再输一次git init

(如果master出现就继续往下二.)

问题2:Reinitialized existing Git repository

解决:直接git add .---->根据英文提示操作( 如git config --global --add safe.directory Z:/WeChat_develop/test3/sportmini)便出现master


二.将文件保存到本地仓库

输入git add . 将文件添加到本地仓库中

 输入git commit -m “提交信息” 进行文件保存

 如果一切顺利就继续往下,如果出现问题解决问题,目前本憨还没遇到问题


三.创建github仓库(若已经创建则继续四.)

记得用英文名称 ,红色箭头必填 ,其他可以以后有需要再加


 四.为github仓库设置秘钥(如果已设置就继续五.)

目的:设置秘钥让每次上传不用每次都要输一次账号密码,就是一切为了安(fang)全(bian)

4.1设置ssh密钥

首先检查是否已生成密钥 cd ~/.ssh,ls如果有3个文件,则密钥已经生成,id_rsa.pub就是公钥

如果没有,输入: ssh-keygen -t rsa -C “你的邮箱”

输入 clip < ~/.ssh/id_rsa.pub 会自动复制ssh key,可以直接粘贴

4.2打开GitHub 进入setting找到ssh key并新建

 

 

 

 
4.3测试连接是否成功

输入: ssh -T git@github.com


五.将本地仓库代码上传到GitHub

5.1回到我们的文件打开git Bash here

 5.2绑定github库

git remote add origin +github地址

git remote add origin git@github.com:1159816150/MySchoolTimeTable.git
(这里的git@github.com:1159816150/MySchoolTimeTable.git 是你的仓库地址,如下图)

5.3提交代码到GitHub

输入git push -u origin master(提交到master主分支)
在这里插入图片描述
最后我们就可以去GitHub的仓库上看到我们提交上去的代码了


六.建立远程分支(maste以为的分支,为分支操作做准备)

6.1我们先看看我们目前有哪些分支和分支状态:

  查看分支:$ git branch
  查看状态:$ git status

1.首先切换到master分支上,确认工作目标是干净的,也没有需要commit的;

6.2新建远程分支

新建一个本地分支:

$ git checkout -b 分支名

查看一下现在的分支状态:$ git branch    //星号(*)表示当前所在分支。现在的状态是成功创建的新的分支并且已经切换到新分支上。

可以通过git branch -r 命令查看远端库的分支情况

此时远程也只有master分支

 6.3把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):

首先要连接远程库:

git push --set-upstream origin v1  //v1为创建分支的名字

 

//使用git branch -a查看所有分支,会看到remotes/origin/localbranch这个远程分支,说明新建远程分支成功。


6.4如图所示远程仓库已经创建了v1分支 下面也有代码上传上去了。

git push origin 分支名 --force

例子:

推到master主分支上 

git push origin master --force

推到dev分支上 

git push origin dev --force


6.5将远程git仓库里的指定分支拉取到本地(本地不存在的分支)

当我想从远程仓库里拉取一条本地不存在的分支时:

git checkout -b 本地分支名 origin/远程分支名

这个将会自动创建一个新的本地分支,并与指定的远程分支关联起来。

例如远程仓库里有个分支dev2,我本地没有该分支,我要把dev2拉到我本地:

若成功,将会在本地创建新分支dev2,并自动切到dev2上。

如果出现提示:

fatal: Cannot update paths and switch to branch 'dev2' at the same time.
Did you intend to checkout 'origin/dev2' which can not be resolved as commit?

表示拉取不成功。我们需要先执行

git fetch

然后再执行

git checkout -b 本地分支名 origin/远程分支名

//查看远程分支: git branch -a   查看本地分支:git branch

 6.6删除远程分支

4.git删除分支:
删除本地分支 git branch -d 本地分支名
删除远程分支 git push origin --delete 远程分支名
推送空分支到远程(删除远程分支另一种实现)git push origin :远程分支

 注意,我们当前是处于master分支的位置,来删除v1分支。如果当前是处于v1分支,是没办法删除它自己的


6.7对同一分支的多次提交管理

建立连接直接add commit push


$ git log 
//参看当前分支所以提交记录

 

如果git add.之后后悔,在git commit之前输入 :

git reset 文件名
//把git add.的文件从暂存区拿出

 你可能对同一分支有多次提交:

 想回到某一次的文件:

git reset <commit的id>
//复制commit的id粘贴在git reset 后面
git relog 
//查看所有操作的id 是长id的前7位 等效

 

 


 

七.分支的合并

假如三个人开发,v1,v2,v3三个版本的功能同时进行,现在想把v1已经增加的功能先合并到v2;

老规矩:git branch -a 查看分支

git branch -a //查看所以远程分支

    此时的步骤:check v2和v1

git checkout v1
git checkout v2

    然后再v2的分支基础上执行merge

git merge v1

    如果没有报错,那就直接提交代码上传

git push origin v2

  如果报错,基本是冲突了(比如):

CONFLICT (content): Merge conflict in app/src/main/AndroidManifest.xml
Auto-merging app/build.gradle
CONFLICT (content): Merge conflict in app/build.gradle
Automatic merge failed; fix conflicts and then commit the result.

    你需要去到提示的文件里把git自动标注的版本冲突注释掉,看你具体需要的功能进行删减

    然后把冲突的文件git add,和commit

比如你有2个冲突文件,多文件add的时候直接空格隔开

git add app/src/main/AndroidManifest.xml app/build.gradle
        //文件1                          //文件2

最后再commit

git commit -m "解决2个分支之间的冲突"

修完冲突后再提交代码(功德圆满)

git push origin v2

以下为操作细节

# 合并分支时,如果存在分叉

比如说上面这张图中,最早的时候,master分支是位于C2节点。我基于C2节点,new出一个新的分支iss53,我在iss53上提交了好几个commit。

现在,我准备把iss53上的几个commit合并到master上,此时发现,master分支已经前进到C4了。那该怎么合并呢?

合并的命令仍然是:

$ git checkout master

$ git merge iss53

解释

这次合并的实现,并不同于简单的并入方式。这一次,我的开发历史是从更早的地方开始分叉的。

由于当前 master 分支所指向的commit (C4)并非想要并入分支(iss53)的直接祖先,Git 不得不进行一些处理。就此例而言,Git 会用两个分支的末端(C4 和C5)和它们的共同祖先(C2)进行一次简单的三方合并计算。

Git 没有简单地把分支指针右移,而是对三方合并的结果作一新的快照,并自动创建一个指向它的commit(C6)(如下图所示)。我们把这个特殊的commit 称作合并提交(mergecommit),因为它的祖先不止一个。

值得一提的是Git 可以自己裁决哪个共同祖先才是最佳合并基础;这和CVS 或Subversion(1.5 以后的版本)不同,它们需要开发者手工指定合并基础。所以此特性让Git 的合并操作比其他系统都要简单不少。

# 解决合并时发生的冲突

如果 feature1和feature2修改的是同一个文件中代码的同一个位置,那么,把feature1合并到feature2时,就会产生冲突。这个冲突需要人工解决。步骤如下:

(1)手动修改文件:手动修改冲突的那个文件,决定到底要用哪个分支的代码。

(2)git add:解决好冲突后,输入git status,会提示Unmerged paths。这个时候,输入git add即可,表示:修改冲突成功,加入暂存区

(3)git commit 提交。

然后,我们可以继续把 feature1 分支合并到 master分支,最后删除feature1、feature2。

注意两个分支的同一个文件的不同地方合并时,git会自动合并,不会产生冲突

比如分支feture1对index.html原来的第二行之前加入了一段代码。 分支feature2对index.html在原来的最后一行的后面加入了一段代码。 这个时候在对两个分支合并,git不会产生冲突,因为两个分支是修改同一文件的不同位置。 git自动合并成功。不管是git自动合并成功,还是在人工解决冲突下合并成功,提交之前,都要对代码进行测试


更多操作待续(等我用到再补)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值