上篇文章我们已经安装好了Git,现在我们使用Git来对GitHub进行操作。
1.右击鼠标,点击 Git Bash,进入终端。
2.我们先要跟GitHub进行SSH免密登录。
-
在ssh目录下进行,输入三个回车
进入.ssh目录cd .ssh
:(一路回车默认即可) -
发起公钥请求
ssh-keygen -t rsa
-
在.ssh/目录下,会新生成两个文件:id_rsa.pub和 id_rsa
-
查看 id_rsa.pub 文件内容
cat id_rsa.pub
- 复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→Settings→SSH and GPG keys,New SSH Key,输入复制的密钥信息
这样本地计算机就跟GitHub建立起连接了。
3.配置Git
- 配置github账户。
git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@example.com"
- 配置完成后,在本地git bash 里尝试使用ssh 连接远程github。
ssh -T git@github.com
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is fingerprint值 .
Are you sure you want to continue connecting (yes/no)? 输入yes
- 出现如下结果证明ssh key成功配置。
Hi your-name! You've successfully authenticated, but GitHub does not
provide shell access.
4.Github常用命令
- 假设Github网站上已经建立了一个名为”Hello-World”的仓库,没有README.md和gitignore文件。新建完成后会有一个仓库链接 ,由于已经配置过ssh密钥,所以在本地的电脑上就可以直接使用ssh来连接到远程仓库。
- 到自定的目录下执行命令,将远程的仓库克隆到本地
git clone git@github.com:endeavormoquan/Hello-World.git
- 初始化代码仓库
git init
此时本地的Hello-World文件夹里只有一个.git文件,因为远程的仓库是空仓库。本地电脑里的仓库Hello-World是本地仓库,除了执行特定的命令让本地和远程进行同步或者其他操作之外,本地仓库不影响远程仓库。 在学习git的时候要时刻注意本地仓库和远程仓库的区别和关系
- 进入刚才的Hello-World本地仓库 ,默认进入master分支(现在也只有master分支),执行git status命令,查看当前仓库状态。 提示当前所在的分支,当前的文件变更状态等等信息。每一个commit会更新本地仓库里工作记录树中文件的当前状态。
git status # 查看仓库状态
- 将更新过的文件添加到缓存区
git add . (# 看清楚add 后面有一个小数点,代表提交所有文件)
git add file # 提交指定文件
git add . || git add -A # 提交所有文件
git add *.js #提交所有.js格式文件
git add -f file #强制添加
- git commit命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录,我们就可以在工作树中复原文件。 -m命令是为该次提交附加一个简要的提交信息。 如果需要附加一个更加详细的提交信息,不要加-m,直接执行git commit,随后一个编辑器会自动启动用来编辑更加详细的信息。
注意,这时的提交是将文件变更的记录提交到本地仓库,远程仓库没有任何影响
git commit -m '想提交的信息' # -m 后面的信息自己想填就填什么
- 查看提交日志
git log
git log --graph # 查看分支合并图
- 查看当前工作树和暂存区的差别
git diff
git diff HEAD - - file #比较工作区中的文件与版本库中文件的差异。HEAD指向的是版本库中的当前版本,而file指的是当前工作区中的文件。
- 删除文件
git rm # 会把文件从当前目录删除(不会保存删除的文件)。如果需要从Git仓库中删除,但保留在当前工作目录中,亦即从跟踪清单中删除,可以使用git rm --cached readme.md
- 推送到远程仓库
git push
- 获取最新的远程仓库分支
git pull
- 不太常用的命令
git reflog 用来记录你的每一次命令
git remote 查看当前的远程库
git remote -v 可以显示对应的克隆地址(对于多个远程仓库很有用)
git remote add [short_name][url] 可以添加新的远程仓库
git remote add origin < address > 关联一个远程库
git fetch [remote-name] 可以从远程仓库抓取数据到本地。
git pull 更新数据
git push [remote_name] [branch_name] 推送数据到远程仓库 默认使用origin和master
git push -u origin master [-f] 第一次将本地库的所有内容推送到远程库上
git remote show origin 查看远程仓库信息
git remote rename [old_name][new_name] 远程仓库重命名
git remote rm [remote_name] 删除远程仓库
git branch -d < name > 删除本地分支
git tag 显示当前库中的标签
git branch 可显示当前所有分支。可以使用–merged和–no-merged查看已经合并、未合并的分支。
git branch <branch_name> 创建新分支
git branch -r 查看远程仓库分支
git checkout <branch_name> 切换到指定的分支
git checkout -b <branch_name> 创建新分支并切换到该分支
- 合并分支
git merge 合并分支
举例:
将hotfix分支合并到master上需要:
git checkout master
git merge hotfix
合并之后可以使用git branch -d hotfix删除分支。
如果合并时存在冲突,需要手工修改
合并分支时,加上—no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并
- 回滚
git checkout . --恢复上次提交状态
git checkout --file - - 文件在工作区的修改全部撤销
一种是file修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是file已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。