(搬运自优达学城)
导航
0. 需要的一些Git背景知识(Git知识)
使用git init
和git clone
创建仓库
使用git status
查看仓库
使用git log
和 git show
查看以往的commit
使用git add
加入要提交的对象 ,使用git commit
提交至仓库
知道分支,合并分支,以及解决合并冲突
Git中的撤销操作:
使用git commit --amend
用于撤销最近的commit,或者更改commit消息
使用git reset
1.使用远程仓库 (Remote Repositories)
1.1 git remote
Manage Remote Repository
git remote
命令用于创建和管理远程仓库。本地仓库与 你的GitHub 帐户上刚创建的远程仓库之间创建连接。
步骤:
- 使用GitHub创建一个 新的仓库,如下图 。(你需要注册GitHub注册教程,如果你想下载客户端,也通过官网下载https://desktop.github.com)
- 然后使用
$ git remote add origin https://github.com/richardkalehoff/RichardsFantasticProject.git
来链接到本地。
add
命令是一个子命令,用于添加,origin是你设置的简称,可以自己设,后面是复制的URL链接。 - 用
git remote -v
检验是否一切正常,如下图:用git remote -v
检验是否一切正常,如下图:
【扩展】除此之外的remote的其他子命令如下:remote命令官网详解
git remote [-v | --verbose]
git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=<fetch|push>] <name> <url>
git remote rename <old> <new>
git remote remove <name>
git remote set-head <name> (-a | --auto | -d | --delete | <branch>)
git remote set-branches [--add] <name> <branch>…
git remote get-url [--push] [--all] <name>
git remote set-url [--push] <name> <newurl> [<oldurl>]
git remote set-url --add [--push] <name> <newurl>
git remote set-url --delete [--push] <name> <url>
git remote [-v | --verbose] show [-n] <name>…
git remote prune [-n | --dry-run] <name>…
git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)…]
1.2 git push
Send changes to the remote —“推”
- 使用
git push
把本地的仓库推到远端
-
推送之前,使用
$ git log --oneline --graph --decorate --all
查看一下本地分支,将会看到只有本地分支,没有远程分支 -
使用
$ git push origin master
推送,我的远程仓库的简写名为 origin,并且我想推送的 commit 位于master分支上。
git push 的命令格式如下:
$ git push <remote-shortname> <branch>
-
再次使用
$ git log --oneline --graph --decorate --all
命令,可以看到新的远程分支,推送成功,查看GitHub 的Web端可见。
1.3 git pull
Retrieve updates from the remote — “拉”
本地仓库中出现的分支实际上在跟踪远程仓库中的一个分支(例如,本地仓库中的 origin/master 称为跟踪分支,因为它在跟踪远程仓库上简写名为 “origin” 的 master 分支)
$ git pull origin master
运行此命令会检索origin远程仓库中的master分支中的commit
此命令会自动合并本地分支于跟踪的分支,如果不想自动合并,可以运行`git fetch
1.4git fetch
和git pull 相似,但是不会自动合并
2.使用其他开发者的仓库
2.1 fork仓库
fork(叉子) 分叉,We’d say that the road forked into two different paths,
2.2 查看现有工作
查看现有工作最大的问题是:定位问题,commit数量可能十分巨大,找一个commit是一件麻烦事。
$ git shortlog 可以按照作者排序
$ git shortlog -s -n
其中:用 -s 仅显示 commit 的数量(而不是每个 commit 的消息),以及用 -n 来按数量排序
$ git log --author="Paul Lewis" 按作者筛选 ,其中Paul Lewis是人名
$ git show 5966b66 按照commit代码筛选
$ git log --grep=bug 筛选提到 "bug" 一词的 commit
$ git log --grep bug
例如:使用 --grep 选项筛选 commit
$ git log --grep="border radius issue in Safari"
Grep 是一个模式匹配工具,它不在本课程教学范围内。但是简单介绍一下,如果你运行 git log --grep “fort”,那么 Git 将显示顺序包含字符 f、o、r、t 的 commit 。
2.3 确定任务
Pull Request 扶着把Fork上面的分支推送给原作者
操作:
Star(收藏)和 Watch(关注):
Star 是能帮助你跟踪感兴趣仓库的一个有用功能,同时也成为了衡量仓库受欢迎程度的手段
Watch仓库:如果你要跟进一个项目的变化,并希望接收变更通知如果。你频繁地在一个仓库上工作,那么我建议你将 watch 设置改为"Watching"(持续关注)。这样,当该仓库发生任何活动时,GitHub 都会通知你,例如当有人向仓库推送变更,创建了新的 Issues,或者在现有 Issues 中添加了评论。
watch 一个仓库后,如果你的本地仓库做了修改,而原作者的也变化了,这时就会有两个分支:
我们将使用 git remote 命令来向此列表添加一个新的简写名和 URL。这会提供给我们一个与源仓库之间的连接。
$ git remote add upstream https://github.com/udacity/course-collaboration-travel-plans.git
其中,origin 指的不是我们 fork 自的源仓库(也称为"初始"仓库),而是指我们 fork 后的仓库。虽然它叫 origin,但实际并不是初始仓库。
拉取上游变更
要获得上游远程仓库的更改,我们只需运行 git pull 并使用 upstream 简写名,而不是 origin 简写名:
$ git fetch upstream master
git fetch 只更新本地仓库。要更新 GitHub 上的项目,我们需要将这些新获取的 commit 推送到我们的 fork。
$ git log --oneline --graph --decorate --all
现在本地 master 分支前有一个 upstream/master 远程分支。upstream/master 位于 commit 52e493f 上,而 master 分支位于 commit 1c12194 上。使用 upstream/master 分支来跟踪源仓库 master 分支的位置。现在,我们可以运行 git fetch upstream master,获取对源仓库的master分支所做的更改
问题:
使用 git fetch upstream master 命令拉取了 upstream 远程仓库的 master 分支上的更改。
如果我们想获取 upstream/master 更改并将它们合并到master分支,我们应使用什么命令?
补充:
git log -p -n 3
//显示最近三条commit