Github常用命令【转】
本地仓库(local repository)
创建一个本地仓库的流程:
- 为本地仓库创建一个目录
- 在目录中执行 git init
对本地仓库所做的改变(例如添加、删除文件等)首先加入到本地仓库的 Index(stage)中,之后通过 commit 命令将这些改变提交到本地仓库。
创建某个仓库的拷贝
- git clone /path/to/repository
这里的 /path/to/repository 可以是一个本地路径,也可以是一个 URL。范例:
- git clone https://github.com/name5566/merry.git
针对本地仓库的常见操作
- 文件添加操作
- 将文件加入到 Index 中去(文件被修改也需要加入到 Index 后才能提交)
- git add filename
- 将所有新增的文件加入到 Index 中去
- git add *
- 文件(或目录)的移动(或重命名)操作
- git mv file1 file2
- 文件的删除操作
- 将文件从当前目录和 Index 中移除
- git rm filename
- 提交改变到本地仓库
- 提交改变到本地仓库
- git commit -m "message"
- 根据当前文件被修改和删除的情况更新 Index 并提交这些改变到本地仓库(未告知 git 的新文件除外)
- git commit -a -m "message"
- 显示当前尚未提交的改变
- git status
将本地仓库的改变推送到远程仓库
我们使用 commit 命令将改变提交到本地仓库,之后可以将这些改变推送到远程仓库中:
- 这里 master 表示分支,你可以根据实际需要推送的分支来进行修改
- git push origin master
分支
- 分支间相互切换
- git checkout master
- git checkout feature_x
- 创建新分支并切换过去
- git checkout -b feature_x
- 删除特定分支
- git branch -d feature_x
-
删除远程子分支
1. git push origin -d feature_x
- 合并分支
- git merge feature_x
分支创建之后,可以推送到远程仓库:
- git push origin feature_x
更新本地仓库
- git pull
日志
- 显示日志
- git log
- 显示 bob 的日志
- git log --author=bob
替换本地修改
有时候,我们希望还原所做的修改:
- 放弃当前对 filename 文件的修改,获取本地仓库中最后一次提交的结果
- git checkout -- filename
- 放弃本地所有改变和提交,直接从远程仓库获取
- git fetch origin
- git reset --hard origin/master
从github上clone子分支
正常情况下,我们在github上看到一个clone地址,git clone xxxxxxx.git后,默认clone进入的是master分支,如果想切换到某一个子分支,可以使用
git checkout -b child_repos origin/child_repos
其中,child_repos指的是目标子分支名,
这时,使用git branch可以看到自己已经在子分支上,正常
git pull origin child_repos
git push origin child_repos
即可。
Git 怎样保证fork出来的project和原project(上游项目)同步更新
步骤:
1. 在 Fork 的代码库中添加上游代码库的 remote 源,该操作只需操作一次即可。
如: 其中# upstream 表示上游代码库名, 可以任意。
git remote add upstream https://github.scm.corp.ebay.com/montage/frontend-ui-workspace
2. 将本地的修改提交 commit
3. 在每次 Pull Request 前做如下操作,即可实现和上游版本库的同步。
3.1 : git remote update upstream
3.2 : git rebase upstream/{branch name}
需要注意的是在操作3.2之前,一定要将checkout到{branch name}所指定的branch,
如: git checkout develop
4. Push 代码到 Github
git push
如果项目中有引用其他项目作为子项目 clone时使用
`git clone` 的时候加上 `--recursive`
可以clone整个项目,包含子项目