我的Git笔记

作者: 正义的程序员 | 来源:发表于2019-05-29 06:56 被阅读1次
Photo by Geordanna Cordero-Fields on Unsplash

每次用到git,总会遇到一些问题,所以写这篇文章记录一下。

fork

fork完之后,你可以在自己的仓库中看到同名的项目,URL的形式:https://github.com/your_name/repo_name,如下是我fork的项目:

现在,随意更改这个项目都不会影响原来的项目。

clone项目


fork的项目拉到本地:

// clone 到本地的 repo_name 目录
git clone https://github.com/your_name/repo_name repo_name

创建branch


进入仓库目录后,可以使用如下命令创建并切换到test分支

cd repo_name

// 创建并切换到 test 分支
git checkout -b test

修改本地仓库,并commit


在这个test分支下经过一些修改后,需要先提交这些修改到本地仓库

// 查看修改
git status
git status

status命令可以看到我们修改了哪些文件,使用diff命令将修改的文件和原文件对比,查看具体修改内容:

git diff README.md
git diff

可以看到我删除了一行,并加了一行,内容是一个>

如果要撤销修改,可以ctrl+z(command+z),但status命令已经提示了,使用checkout命令可以撤销(discard)修改:

// 注意,是2个减号
git checkout — README.md

使用如下命令提交我们的修改:

// 添加所有修改、删除、新增的文件
git add -A

// 或者,添加指定文件
git add README.md

// 记下做了哪些修改,简明一点就行
git commit -m “修改说明”

将我们的项目和原始项目合并


前面已经说过,我们fork的项目不会影响到原始项目,同样,原始项目的更新也不会影响到我们的项目。现在,就会有这样一个问题,原始项目有很多人维护,每天都在更新,而我们的项目在修改完提交Pull Request时,已经落后原始项目好几个版本,这时提交就会有冲突,结果就会被拒绝。

为了解决这个问题,我们需要再添加一个remote配置,暂且叫它upstream,区别于originupstream用来同步本地仓库的。在默认情况下,clone完之后,git自动将origin指向我们自己的项目地址的,可以使用如下命令查看:


// 2个verbos查看远程仓库详细信息

git remote -vv

现在,添加upstream


// 添加upstream

git remote add upstream [git@github.com](mailto:git@github.com):repo_owner/repo_name.git

现在假设原始仓库更新并提交了很多次,我们本地代码已经落后很多,为了保持同步,可以通过如下命令拉取:


// 切换到master分支

git checkout master

// 使用 rebase 模式拉取 upstream/master 上的更新

// 且与本地的 master 合并, 第一个 master 是远程分支,第二个是本地分支

git pull --rebase upstream master:master

// 切换到前面建立的 test 分支

git checkout test

// 使用 rebase 模式合并本地的 test 和 master 分支

git rebase master

当然,还可以通过如下方式:


// 切换到 master 分支

git checkout master

// 获取 upstream 上的 master 分支

git fetch upstream master

git checkout test

//使用 rebase 模式合并本地的 test 和 upstream/master 分支

git rebase upstream/master

总的来说,所有本地的改动都不会直接在 master 上面进行。通过新建upstream分支,可以把本地的 master 分支当作一个只负责从上游获取更新的分支,先将上游的 master 和本地的 master 合并,此时,保证本地的 master 是上游的最新版本,再通过合并 test 和本地的 master 来完成本地改动的更新。

注意:使用rebase时应当小心一点,这会影响到已经提交的代码

推送(push)到远程仓库


完成修改和同步后,需要将本地修改的代码推送到github

// 将本地 test 分支的代码 push 到 origin 的 test 分支
// 如果该分支不存在则会创建
git push origin test

发起合并请求(Pull Request)


代码提交后,登录到GitHub,页面上就会提示我们发起Pull Request

pull request

删除test分支


我们的代码被合并之后,也不再修改,需要将test分支删除,如下:

// 1. 删除远程分支
git push origin —delete test

// 2. 删除本地分支
git branch -d test

整个流程就是这样。

参考:


欢迎关注我的公众号:


正义的程序猿

相关文章

网友评论

    本文标题:我的Git笔记

    本文链接:https://www.haomeiwen.com/subject/quwstctx.html