Back
Featured image of post Git 命令行版本学习

Git 命令行版本学习

Git 命令行与 Github 的使用笔记

Leaning Git and Github!

这是我自己学习使用 Git Github 时整理出的笔记,当时 Github 还没有出 官方教程,没有 论坛,现在都有了,这都是很好的学习资源,强烈推荐:+1:。这份文章列出了我学习时遇到的问题和解决方法,刚好趁这次疫情期间再整理一下,主要是将 ORG 文件转成 Markdown 文件的工作,因为 Github 对 org 文件格式并不友好,真的非常遗憾 :disappointed:!

Table of Contents

config global user’s imformation

git config --global user.name "YourName"
git config --global user.email "YourEmail@example.com"

git clone

因为一些原因,国内克隆 GitHub 仓库的下载速度非常非常慢,这里提供两种解决办法。

1. 利用 Gitee 做工具人

注册一个 Gitee 账号。点击右上角的 ➕ ,选择 从 Github/GitLab 导入仓库,导入完成后使用 Github 同样的方式克隆仓库就行了。git clone git@gitee.com:[YourName]/[YourRepository] ,将 github 换成 gitee。这个方法有点繁琐,不过效果好。

2. 使用 cnpmjs镜像

这个方法非常简单,只要修改地址后面的 github.comgithub.com.cnpmjs.org

git clone https://github.com/[YourName]/[YourRepository]

# 使用cnpmjs
git clone  https://github.com.cnpmjs.org/[YourName]/[YourRepository]

解决git push代码到github上一直提示输入用户名及密码的问题

原因分析

出现这种情况的原因是我们使用了 http 的方式 clone 代码到本地,相应的,也是使用 http 的方式将代码 push 到服务器.

解决办法

解决办法很简单,将http方式改为ssh方式即可. 步骤:

  1. 先查看当前方式
git remote -v
  1. http方式改为ssh方式。先移除旧的httporigin
git remote rm origin
  1. 再添加新的ssh方式的origin
git remote add origin git@github.com:userName/repositoryName.git
  1. 改动完之后直接执行git push是无法推送代码的,需要设置一下上游要跟踪的分支,与此同时会自动执行一次git push命令,此时已经不用要求输入用户名及密码啦!​⚠​ 注意自己当前的分支,下面是推送到 master 分支。
git push --set-upstream origin master

工作区的文件操作

撤销操作

假设有文件 test01.txt/test/test02.txt

代码分别是:

git checkout -- test01.txt
git checkout -- /test/test02.txt

添加和删除操作

添加

git add filename

删除

git rm filename

移除版本控制

git rm -r --cached file

.gitignore 中添加要移除的文件,最后:

git commit -m  'modified .gitignore'

branch操作

创建操作

我们创建dev分支,然后切换到dev分支

git checkout -b dev

:exclamation: 解释上一条命令。

git checkout命令加上 -b 参数表示创建并切换,相当于以下两条命令:

git branch devgit checkout dev

查看并切换

  1. 查看 紧接着上面创建 dev 分支后,继续讲。带 * 号的就是当前分支。
git branch* dev  master
  1. 切换至 master 分支
git checkout {master}

合并(merge)

masterdev

git merge dev

删除分支(delete)

删除 dev 分支

git branch -d devDeleted branch dev (was b17d20e).

设置远程仓库

  1. 创建SSH key

打开Shell,输入以下代码

ssh-keygen -t rsa -C "youremail@example.com"

之后不用管直接按两次 Enter 就创建完毕了。

  1. 添加SSH密匙 创建完毕后用户目录下应该有个 .ssh 的文件夹。(:exclamation: 没有的话,可能是你没有显示隐藏文件)复制 id_rsa.pub 文件里的所有内容。
    • 登录自己的 Github 账户,点击右上角头像图标。
    • 点击 Settings
    • 找到并点击新页面下的 SSH and GPG keys
    • 右边的页面刷新后,点击 SSH keys 右边的 New SSH key
    • 自己起一个 title,例如当前的设备 win10-work,在 Key 这里粘贴刚刚从 id_rsa.pub 文件里复制的所有内容。
    • 最后点击 Add SSH key 大功告成。:tada:

push an existing repository from the command line

git remote add origin git@github.com:userName/repositoryName.gitgit push -u origin master

create a new repository on the command line

echo "# .emacs.d(your repository name)" >> README.mdgit initgit add README.mdgit commit -m "first commit"git remote add origin git@github.com:userName/repositoryName.gitgit push -u origin master

回滚

  1. 查看当前版本库的状态
git log

or

git log --pretty=oneline
  1. 回滚到上一次提交
git reset --hard HEAD^

or

git reset --hard [commit id(前五到六位数就够了)]

⚠ 注意

  • 参数 hard 的作用
  • HEAD^^=HEAD~2 意思就是回滚到前两次提交的状态
  1. 如果想恢复到新版本
    • > git reflog 查看commit记录
    • 根据commit id 进行回滚(见步骤2)

pull requests and merge

pull requests

就是向一个分支提出合并请求,合并前弄清楚谁是被合并的分支

merge

在提出一个pull requests 请求后,我们可以合并分支,也可以不合并,这就是这一步要做的事情。在合并时也可能出现问题,到时候自行Google,目前的经历的一个问题,是通过删除或保留一些“问题”文件解决的。

总结

除了一直提示输入用户名及密码的问题外,其他所有的问题都是比较容易解决的。当然我现在并没有使用官网命令行的 Git ,在接触了 Emacs 后,有一个叫 MagitEmacs 杀手锏,类似于图形化界面的操作,我基本上就没用过命令行了。哈哈,having a nice day!