Github使用

Github使用

生成SSH key

SSh(安全外壳协议)GitHub 上,一般都是通过 SSH 来授权的,而且大多数 Git 服务器也会选择使用 SSH 公钥来进行授权,所以想要向 GitHub 提交代码,首先就得在 GitHub 上添加 SSH key配置。

1
2
3
4
ssh-keygen -t rsa -C "xxx@xxx.com"
//执行后一直回车
cd ~/.ssh
cat id_rsa.pub

生成公钥和私钥,无需账号和密码即可clone和push代码

Info Header

Welcome to Hexo!

操作git

git clone

  • 克隆指定分支

    1
    git clone -b [branchname] [git@name.git]
  • 改变克隆的文件夹名称

    1
    git clone [git@name.git] [foldername]

git --help

得到git-doc文件

1
git --help <command>

git init

初始一个Git仓库

先创建好仓库目录,并保存好文件

在我们进行任何的git操作之前,我们都得先切换到 Git 的仓库目录。

我们得先进入到(我们定义的)Git 仓库的最顶层文件目录下,然后从此目录中进入 Git Bash,这样之后的操作才能顺利进行

git status

查看仓库状态,若未创建,则返回not a git repository

git init

在命令行窗口的光标处,输入git init命令,初始化 Git 仓库:

初始化之后仓库变成Git仓库

git add

将已有的文件添加到Git仓库,git add xxx.xxx

已经显示Initial commit初始化提交了,同时已经没有Untracked files提示了,这说明文件hit.txt已经被添加到 Git 仓库

在这里,需要声明一点,那就是:git add命令并没有把文件提交到 Git 仓库,而是把文件添加到了「临时缓冲区」,这个命令有效防止了我们错误提交的可能性。

git commit

在命令行窗口的光标处,输入git commit -m "text commit"命令,将hit.txt文件提交到 Git 仓库:

其中commit表示提交,-m表示提交信息,提交信息写在双引号""内。接下来,再输入git status命令查看仓库状态

结果显示nothing to commit, working tree clean,这表示已经没有内容可以提交了,即全部内容已经提交完毕。

git log

在命令行窗口的光标处,输入git log命令,打印 Git 仓库提交日志:

git branch

在命令行窗口的光标处,输入git branch命令,查看 Git 仓库的分支情况:

如上图所示,显示了仓库demo中的分支情况,现在仅有一个master分支,其中master分支前的*号表示“当前所在的分支”,例如* master就意味着我们所在的位置为demo仓库的主分支。输入命令git branch a,再输入命令git branch,结果如下图所示:

git checkout

在命令行窗口的光标处,输入git checkout a命令,切换到a分支:

在这里,我们还有一个更简单的方法来查看当前的分支,即通过观察上图中用红色框圈起来的部分。此外,我们也可以在创建分支的同时,直接切换到新分支,命令为git checkout -b,例如输入git checkout -b b命令:

git merge

切换到master分支,然后输入git merge a命令,将a分支合并到master分支:

此外,在这里需要注意一点,那就是:在合并分支的时候,要考虑到两个分支是否有冲突,如果有冲突,则不能直接合并,需要先解决冲突;反之,则可以直接合并。

git branch -d & git branch -D

在命令行窗口的光标处,输入git branch -d a命令,删除a分支:

不过有的时候,通过git branch -d命令可以出现删除不了现象,例如分支a的代码没有合并到主分支等,这时如果我们一定要删除该分支,那么我们可以通过命令git branch -D进行强制删除。

git tag

在命令行窗口的光标处,输入git tag v1.0命令,为当前分支添加标签:

如上图所示,我们为当前所在的a分支添加了一个v1.0标签。通过命令git tag即可查看标签记录:

如上图所示,我们为当前所在的a分支添加了一个v1.0标签。通过命令git tag即可查看标签记录:

如上图所示,显示了我们添加标签的记录。通过命令git checkout v1.0即可切换到该标签下的代码状态:

git remote

返回当前remote仓库名

1
git remote add [-t <branch>] [-m <master>] [-f] [--[no-]tags] [--mirror=(fetch|push)] <name> <url>

git push

github仓库若还未建立可上传的分支,它的作用是将当前分支("main"分支)推送到远程仓库("origin"是远程仓库的名称),同时将远程分支与当前分支关联起来。这样,以后你就可以直接使用git push来推送并拉取这个分支,而不需要每次都指定远程和分支。

1
git push --set-upstream origin main

specify the URL from the command-line or configure a remote repository using

1
git remote add <name> <url>

然后向远端push

1
git push <name of repo> main(<branch of remote repo>)

git pull

1
git pull 

绑定Git与Github

Git报错处理

failed to push some refs

原因:远程库与本地库不一致,将远程库同步到本地库

解决办法:

1
git pull --rebase <name of repo> main

该命令的意思是把远程库中的更新合并到(pull=fetch+merge)本地库中,–-rebase的作用是取消掉本地库中刚刚的commit,并把他们接到更新后的版本库之中。

unable to access Failed to connect

有可能你的gitbub之前设置过代理,只需分别执行如下代码即可:

1
2
git config --global --unset http.proxy
git config --global --unset https.proxy

若还没有解决,可以尝试如下解决方式

1
git config --global url.git://github.com/.insteadOf https://github.com/

OpenSSL SSL_read: Connection was reset

产生原因:一般是这是因为服务器的SSL证书没有经过第三方机构的签署,所以才报错

解决方法:解除ssl验证后,再次git即可

1
git config --global http.sslVerify "false"