不错的教程:https://www.runoob.com/manual/git-guide/
可以模仿学习这种网站的教学手法
1. 新建仓库
在当前的文件夹里面,把目录作为Git仓库。我们只需要初始化这个目录。
git init
指定某个文件夹作为Git仓库
git init ~/test
初始化后,会在当前目录生成一个 .git 目录
2. 拷贝项目
拉一个 Git 仓库到本地
git clone [url]
如果是想自定义被拉下来的项目名称,可以在后面再添加一个参数
git clone https://github.com/xxx/xxx NewName
3. 工作区域
你的本地仓库由 git 维护的三棵“树”组成。
- 第一个是你的
工作目录
,它持有实际文件; - 第二个是
暂存区(Index)
,它像个缓存区域,临时保存你的改动; - 第三个是
HEAD
,它指向你最后一次提交的结果。
- 当对工作目录修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作目录修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中
- 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新
4. 提交和修改
命令 | 说明 |
---|---|
git add | 添加文件到仓库 |
git status | 查看仓库当前的状态,显示有变更的文件 |
git diff | 比较文件的不同,即暂存区和工作区的差异 |
git commit | 提交暂存区到本地仓库 |
git reset | 回退版本 |
git rm | 删除工作区文件 |
git mv | 移动或重命名工作区文件 |
例子:
#添加到暂存区
git add xxx.c
#添加到暂存区
git add *
#提交到了 HEAD,但是还没到你的远端仓库
git commit -m "代码提交信息"
5. 日志和修改历史
命令 | 说明 |
---|---|
git log | 查看历史提交记录 |
git blame | 以列表形式查看指定文件的历史修改记录 |
可以用 --oneline 选项来查看历史记录的简洁的版本
git log --oneline
还可以用 --graph 选项,查看历史中什么时候出现了分支、合并。以下为相同的命令,开启了拓扑图选项:
git log --graph
如果你要指定日期,可以执行几个选项:–since 和 --before,但是你也可以用 --until 和 --after(–no-merges 选项以隐藏合并提交)
git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
查找指定用户的提交日志
#5次的记录
git log --author=xxxx --oneline -5
6. 远程操作
命令 | 说明 |
---|---|
git remote | 远程仓库操作 |
git fetch | 从远程获取代码库 |
git pull | 下载远程代码并合并 |
git push | 上传远程代码并合并 |
例子:
#将这些改动提交到远端仓库
git push origin master
#并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加
git remote add origin <server>
7. 分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上
创建一个叫做“feature_x”的分支,并切换过去:
git checkout -b feature_x
切换回主分支:
git checkout master
列出分支基本命令:
git branch
把新建的分支删掉:
git branch -d feature_x
除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
git push origin <branch>
合并分支命令:
git merge
删除分支命令:
git branch -d (branchname)
8. 标签
如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。(-a 选项意为"创建一个带注解的标签"。)
git tag -a v1.0
当你执行 git tag -a 命令时,Git 会打开你的编辑器,让你写一句标签注解,就像你给提交写注解一样。
现在,注意当我们执行 git log --decorate 时,我们可以看到我们的标签了
查看所有标签
git tag