1.GitHub远程仓库
1.1首先你得在github上创建一个账号,然后在github上创建一个仓库:
- 登录成功之后点击首页右上边的,New按钮(如下图所示)
- 页面跳转到新建仓库的页面
- 根据上图提示,填完仓库名字之后点击Create repository 按钮创建仓库,页面跳转到仓库首页。
- 在仓库的首页 可以看到,Github支持两种同步方式“https”和“ssh”。如果使用https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。而且如果是公司配置的私有git服务器一般不提供https方式访问,所以我们着重讲“ssh”方式。
- 在windows下我们可以使用 Git Bash.exe来生成密钥,通过开始菜单或者任意位置右键菜单打开Git Bash窗口,执行命令: ssh-keygen -t rsa 生成公钥和私钥
- 执行命令完成后,在window本地用户.ssh目录C:\Users\用户名.ssh下面生成如下名称的公钥和私钥,如下图:
- 密钥生成后需要在github上配置密钥本地才可以顺利访问
2.同步到远程仓库
2.1使用Git Bash
- 在仓库所在的目录右键选择“Git Bash Here”,打开Git Bash窗口。
2.2使用TortoiseGit同步
- 配置TortoiseGit
Url:远程仓库的地址
推送URL:也是相同的
Putty密钥:选择刚才生成的密钥中的私钥 - 同步。在本地仓库的文件中单击右键,选择“Git同步”
注意:如果推送有error,可以选择强制Force。
3.从远程仓库克隆
克隆远程仓库也就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。选择一个任意部署仓库的目录,然后克隆远程仓库。
3.1使用git bash:
$ git clone git@github.com:DiamondXue/GitTest.git
3.2使用TortoiseGit:
在自己的指定目录点击右键然后按照下图所示点击Git克隆
4.从远程仓库取代码
Git中从远程的分支获取最新的版本到本地有这样2个命令:
- git fetch:相当于是从远程获取最新版本到本地,不会自动merge(合并代码)
- git pull:相当于是从远程拉取最新版本并merge到本地
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。
如果使用TortoiseGit的话可以从右键菜单中点击“拉取”(pull)或者“获取”(fetch)
5.如何github上给别人的项目提交PR
5.1 fork
5.2 clone
Thinkpad@Thinkpad-PC MINGW64 /e/GitStudy/forktest2 (master)
$ git clone git@github.com:DiamondXue/BigData.git
Cloning into 'BigData'...
remote: Enumerating objects: 226, done.
remote: Total 226 (delta 0), reused 0 (delta 0), pack-reused 226
Receiving objects: 100% (226/226), 427.31 KiB | 16.00 KiB/s, done.
Resolving deltas: 100% (55/55), done.
用git remote -v命令,可以看到此时只与自己的远程仓库建立了连接
还需要与上游建立连接,这里上游指的是一开始 fork 的那个项目源,以 BIgData为例,执行如下命令:
Thinkpad@Thinkpad-PC MINGW64 /e/GitStudy/forktest2/BigData (master)
$ git remote -v
origin git@github.com:DiamondXue/BigData.git (fetch)
origin git@github.com:DiamondXue/BigData.git (push)
Thinkpad@Thinkpad-PC MINGW64 /e/GitStudy/forktest2/BigData (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
Thinkpad@Thinkpad-PC MINGW64 /e/GitStudy/forktest2/BigData (master)
$ git remote add upstream git@github.com:ruozeata/BigData.git
Thinkpad@Thinkpad-PC MINGW64 /e/GitStudy/forktest2/BigData (master)
$ git remote -v
origin git@github.com:DiamondXue/BigData.git (fetch)
origin git@github.com:DiamondXue/BigData.git (push)
upstream git@github.com:ruozeata/BigData.git (fetch)
upstream git@github.com:ruozeata/BigData.git (push)
5.3 创建分支修改代码并推送
5.4 在页面上创建pr