本文说明在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 --- 显示分支一览表
其中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
即可获取最新远程分支到本地。