Git和Github的使用

//本人的学习笔记,供个人查看
参考:https://blog.csdn.net/u011535541/article/details/83379151

一、Git的基本操作

Git和Github的使用

设置用户名和邮箱:
Git和Github的使用
创建本地仓库(repository)viviantestgit
Git和Github的使用
把该仓库初始化为git可管理的仓库:
Git和Github的使用
在viviantestgit目录下创建readme.txt,里面写“你好”
提交到仓库
Git和Github的使用
修改readme.txt(增加“second”)之后输入git status查看状态:
已修改未提交状态
Git和Github的使用
查看修改了什么:
Git和Github的使用

提交修改后的readme.txt
Git和Github的使用
查看历史修改记录:
Git和Github的使用
简化版本
Git和Github的使用
回退到上一个版本
查看目前内容
Git和Github的使用
撤回回退
可以通过git reflog查到版本号
Git和Github的使用

Git和Github的使用
撤销修改:
法一:如果我知道要删掉那些内容的话,直接手动更改去掉那些需要的文件,然后add添加到暂存区,最后commit掉。

法二:我可以按以前的方法直接恢复到上一个版本。使用 git reset --hard HEAD^

法三:git checkout – readme.txt
有以下两种情况:

1.readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。(在readme.txt中增加third)
Git和Github的使用

2.另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。(在readme.txt中增加third,add后又增加fourth)
Git和Github的使用
删除和恢复:
Git和Github的使用
rm readme.txt之后可以commit(不可恢复),也可以用git checkout – readme.txt恢复文件(之后要commit)

二、使用Github

1.把本地库上传到远程库

在本地仓库路径下与远程仓库testgit关联起来并把本地仓库push到远程。
注意
把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。

由于远程库是空的,我们第一次推送master分支时,加上了 –u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令(git push origin master)。
Git和Github的使用
Git和Github的使用

2.把远程库克隆到本地

把testgit2克隆到本地
Git和Github的使用
Git和Github的使用
Git和Github的使用

3.分支创建与合并

git checkout -b dev相当于
git branch dev创建分支
git checkout dev转换分支
Git和Github的使用
Git和Github的使用
Git和Github的使用
Git和Github的使用
Git和Github的使用
总结创建与合并分支命令如下

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout –b name

合并某分支到当前分支:git merge name

删除分支:git branch –d name

解决冲突:
完成以下修改:
Git和Github的使用
Git和Github的使用
此时fenzhi1的readme.txt的内容是:Git和Github的使用
master的readme.txt的内容是:Git和Github的使用
合并会产生冲突:
Git和Github的使用
Git和Github的使用
修改:
Git和Github的使用
Git和Github的使用

Git和Github的使用
查看修改记录:
Git和Github的使用
通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式

Git和Github的使用
分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

另外:可以使用git stash把当前没有commit的分支隐藏起来,再去别的分支工作,工作完后回到这个分支,使用git stash apply(恢复后,stash内容并不删除,你需要使用命令git stash drop来删除) 或git stash pop(恢复的同时把stash内容也删除了)来恢复。

4.使用GitHub完成多人合作

origin代表远程仓库
Git和Github的使用
现在把本地master分支push到远程仓库:
Git和Github的使用
把fenzhi1分支推送到远程仓库:
Git和Github的使用
Git和Github的使用
接下来模拟两个人合作使用github:一个人(vivian是我方)的本地仓库是viviantestgit,另一个人(summer是对方)的是summertestgit。

首先summer先把远程仓库clone下来:
Git和Github的使用
Git和Github的使用
summer打算在fenzhi1上进行工作修改,并且push成功
Git和Github的使用
Git和Github的使用
与此同时
vivian也在fenzhi1上进行工作,但此时她不知道远程的fenzhi1已经被重新push了,因此她还在原来的自己的分支上进行工作。

Git和Github的使用
先把原来fenzhi1的远程分支pull下来
Git和Github的使用
然后在文件里面修改你的内容

Git和Github的使用
修改成:
Git和Github的使用
然后再push:
Git和Github的使用
Git和Github的使用
成功push上去。

总结:
因此:多人协作工作模式一般是这样的:

首先,可以试图用git push origin branch-name推送自己的修改.
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。

//

先用git pull把最新的提交从origin/fenzhi1抓下来,然后在本地合并,解决冲突,再推送
Git和Github的使用
git pull也失败了,原因是没有指定本地fenzhi1分支与远程origin/fenzhi1分支的链接,根据提示,设置fenzhi2和origin/fenzhi1的链接(不知道为什么fenzhi1不行):如下:
Git和Github的使用

5.实用:

Git和Github的使用

相关文章: