Github基本操作2018-10-28

本文说明在Git的基本操作指令

基础是已经下载了Git Bash,配置了用户名邮箱和SSH密钥
具体参考了《GITHUB入门与实践》第4章

1 基本操作

1.1 git init ---- 初始化仓库

$ mkdir git-tutorial
$ cd git-tutorial
$ git init

1.2 git status ---- 查看仓库状态

插入一个README.md

$ touch README.md
$ git status

1.3 git add ---- 向暂存区添加文件

上面添加的文件只是在当前工作目录中,但是不会被计入Git仓库的版本管理对象中
因此用git status查看时,README.md为Untracked files。

 $ git add README.md
 $ git status

1.4 git commit --- 保存仓库的历史记录

git commit 可以将暂存区中的文件实际保存到git仓库的历史记录中,通过这些记录,可以在工作树中复原文件。

$ git commit -m "First commit"

1.5 git log --- 查看提交日志

$ git log
$ git log -pretty=short

显示文件的改动:

$ git log -p README.md

1.6 git diff --- 查看更改前后的差别

比较的是工作树和暂存区之间的差别。
如果比较工作树与最新提交之间的区别,请使用:

$ git diff HEAD

2 分支的操作

2.1 git branch --- 显示分支一览表

image.png

其中master前面的*表示这是我们当前所在的分支。

2.2 git checkout -b --- 创建、切换分支

$ git checkout -b feature-A

此时创建了分支 feature-A,并且工作在该分支下

2.3 切换分支 git checkout

切换回主分支为:

$ git checkout master

切换到上一个分支为:

$ git checkout -

2.4 遇到如下问题

XXXX@LAPTOP-L9R6BKCR MINGW64 /c/01-02-GIT/git-tutorial (master)
$ git checkout feature-A
error: Your local changes to the following files would be overwritten by checkout:
README.md
Please commit your changes or stash them before you switch branches.
Aborting

删除.git文件夹下的index.lock文件即可

2.5 git merge 合并分支

将feature-A合并到master分支中

 $ git checkout master
 $ git merge --no-ff feature-A

2.6 git log --graph 以图表形式查看分支

3 更改提交的操作

3.1 git reset --- 更改提交的版本

$ git reset --hard 哈希值

回退到原来的master分支后,README.md中内容变回原内容。
此时建立分支fix-B,在分支B中修改README.md中的内容。

git log只能看以当前状态为终点的历史日志。如果需要看全部状态的历史日志,需要输入:

$ git reflog

3.2 取消冲突

例如我们要将两个分支feature-A和fix-B进行合并
使用 git merge --no-ff fix-B指令后,会报错“Merge Conflict in README.md”,这就是冲突。
此时打开README.md会发现其中内容比较混乱,可以将其修改为想要的值,再add和commit。

3.3 git commit --amend --- 修改提交信息

用于修改之前提交时的提交信息内容。

3.4 git rebase -i --- 压缩历史

4 推送至远程仓库

首先要在github上创建一个仓库,将其设置为本地仓库的远程仓库
Github上创建的仓库路径为:git@github.com:用户名/git-tutorial.git

4.1 git remote add --- 添加远程仓库

$ git remote add origin git@github.com:xxxxx/git-tutorial.git  

4.2 git push --- 推送至远程仓库

  • 推送至master分支
    $ git push -u origin master

此时报错:
ERROR: Repository not found.
fatal: Could not read from remote repository.

解决方法:

$ git remote set-url origin git@github.com:xxxx/git-tutorial.git

再进行git push即可。

  • 推送至master以外的分支
    先在本地仓库创建分支D:

    $ git checkout -b feature-D
    

再push:

$ git push -u origin feature-D

5 从远程仓库获取

5.1 git clone --- 获取远程仓库

  • 获取远程仓库
    在另一个文件夹中,打开git bash

    $ git clone git@github.com:xxxx/git-tutorial.git

就将远程仓库中的master分支拷贝过来了。

  • 获取远程的feature-D分支

    $ git checkout -b feature-D origin/feature-D

  • 向本地feature-D分支提交更改
    修改本地文件后,使用git diff查询更改
    使用下面命令进行add和commit

    $ git commit -am "Add feature-D"

  • 推送feature-D分支

    $ git push

5.2 git pull --- 获取最新远程分支

打开原来的项目文件夹(其中feature-D中文件未更新)

$ git pull origin feature-D

即可获取最新远程分支到本地。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容