张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 店铺 关于

常用Git命令和操作(github)

2018-3-28 作者: 张子阳 分类: 其他

这篇文章总结了当使用github托管git仓库时,经常使用的命令。

使用远程仓库

与远程仓库建立关联

git和github是不同的概念,git是版本控制工具,github是托管 Git项目的云端平台。

如果没有远程库,可以先注册一个github账号,然后创建一个新的远程库。

当使用git clone [github url]命令复制一个远程库时,就自动与该远程库建立起了关联。git init则会创建一个无任何关联的本地库。

git remote用于查看远程库,如果什么也没有显示,则表示无关联的远程库;如果显示origin,表示已关联远程库。origin是远程库实际地址的别名。

git remote -v 命令,可以查看远程库的完整路径地址。

如果想要将本地的git库与远程库关联起来,可以使用git remote命令。假设库的地址是:https://github.com/somesite/repo,则命令如下:

git remote add origin https://github.com/somesite/repo

将更改推送至远程库

git push origin [branchname]

git log --oneline --graph --decorate --all * a84a771 (HEAD -> master, origin/master) 修改内容 * ed31941 初次提交

推送后使用 git log --oneline --graph --decorate --all ,可以看到多了 origin/master 字样,称为跟踪分支,origin/master告诉我们远程仓库origin 有一个 master 分支,指向 commit a84a771。

从远程仓库拉取修改

git pull origin [branchname]

使用git pull命令拉取时,会自动将远程仓库中的代码与本地分支进行合并。

git fetch origin [branchname]

使用git fetch命令拉取时,不会在收到这些 commit 之后,自动将本地分支与远程跟踪分支合并。

当需要合并时,在本地的master分支上执行 git merge original/master

当本地的所有Commit远程都有,并且远程有本地没有的Commit时,执行git pull就可以了。
当本地的部分Commit远程没有,并且远程有本地没有的Commit时,先git fetch获取远程Commit,然后手动执行合并,再执行git push推送至远程仓库。

使用其他开发者的仓库

Fork

在github中,fork一个仓库的意思,就是复制一份其他开发者的仓库。fork和clone不同,clone是获得一份本地的仓库副本;而fork是获得一个远程的仓库副本,副本位于github中。

查看其他人的提交

git shortlog 将会对提交者进行分组,然后显示commit的注释。

git shortlog

有时候这样显示仍然会很多,可以添加两个选项:git shortlog -s -n,-s仅显示commit的数量,而不显示注释内容,-n则按数量进行排序。

git shortlog -s -n

如果想要按作者进行筛选,则可以使用--author选项:

git log --author=Jimmy

如果名字中间有空格,则需要加引号,例如:git log --author="Jimmy Zhang"

如果想要搜索注释内容,可以使用--grep选项:

git log --grep="css bug"

与其他开发者协作

创建Pull Request

创建Pull Request允许你提交修改到你fork的原开发者库中。

步骤如下:

  1. 阅读项目的 CONTRIBUTING.md 文件,了解如何贡献
  2. 查看项目现有的Issues
  3. 与项目维护者交流
  4. fork源仓库
  5. 将fork克隆到本地计算机
  6. 创建新的特性分支
  7. 将修改commit到分支
  8. 使用git push推送到你的fork库上
  9. 新建一个Pull Request,包含你的新分支

与开发者的源库保持同步

fork库(别名origin)和源库(被fork的那个库)可能不同步,为了保持同步,可以进行下面的操作:

git还有很多的命令,在实践中慢慢总结吧,了解这些常见的命令,应该已经足够应付大部分的场景了。

感谢阅读,希望这篇文章能给你带来帮助!