Leaning Git and Github!
这是我自己学习使用 Git
Github
时整理出的笔记,当时 Github
还没有出 官方教程,没有 论坛,现在都有了,这都是很好的学习资源,强烈推荐:+1:。这份文章列出了我学习时遇到的问题和解决方法,刚好趁这次疫情期间再整理一下,主要是将 ORG 文件转成 Markdown
文件的工作,因为 Github 对 org 文件格式并不友好,真的非常遗憾 :disappointed:!
Table of Contents
- Leaning Git and Github!
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.com
为 github.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方式即可. 步骤:
- 先查看当前方式
git remote -v
- 把
http
方式改为ssh
方式。先移除旧的http
的origin
git remote rm origin
- 再添加新的
ssh
方式的origin
git remote add origin git@github.com:userName/repositoryName.git
- 改动完之后直接执行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
查看并切换
- 查看
紧接着上面创建
dev
分支后,继续讲。带*
号的就是当前分支。
git branch* dev master
- 切换至
master
分支
git checkout {master}
合并(merge)
master
➡ dev
git merge dev
删除分支(delete)
删除 dev
分支
git branch -d devDeleted branch dev (was b17d20e).
设置远程仓库
- 创建SSH key
打开Shell,输入以下代码
ssh-keygen -t rsa -C "youremail@example.com"
之后不用管直接按两次 Enter
就创建完毕了。
- 添加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
回滚
- 查看当前版本库的状态
git log
or
git log --pretty=oneline
- 回滚到上一次提交
git reset --hard HEAD^
or
git reset --hard [commit id(前五到六位数就够了)]
⚠ 注意
- 参数
hard
的作用 HEAD^^=HEAD~2
意思就是回滚到前两次提交的状态
- 如果想恢复到新版本
> git reflog
查看commit记录- 根据commit id 进行回滚(见步骤2)
pull requests and merge
pull requests
就是向一个分支提出合并请求,合并前弄清楚谁是被合并的分支
merge
在提出一个pull requests 请求后,我们可以合并分支,也可以不合并,这就是这一步要做的事情。在合并时也可能出现问题,到时候自行Google,目前的经历的一个问题,是通过删除或保留一些“问题”文件解决的。
总结
除了一直提示输入用户名及密码的问题外,其他所有的问题都是比较容易解决的。当然我现在并没有使用官网命令行的 Git
,在接触了 Emacs 后,有一个叫 Magit 的 Emacs
杀手锏,类似于图形化界面的操作,我基本上就没用过命令行了。哈哈,having a nice day!