Tools | Git 学习笔记
Contents
1. 获取仓库
1.1. 新建仓库
仓库:respository,可理解为一个目录,该目录下所有文件都可被Git管理。
创建文件夹,打开,执行下面命令创建新仓库
- git init
- 注:该命令将初始化一个 .git 的目录来跟踪管理 repository
1.2. 克隆仓库
执行下面命令创建本地仓库的克隆版
- git clone /path/to/repository
克隆远程服务器上的仓库
- git clone username@host:/path/to/repository
2. 基本快照
2.1. 工作流
我们的本地仓库由Git维护的三棵”树”组成:
- 工作目录(working dir):存放实际使用文件
- 暂存区(stage):缓存区域,临时保存修改的文件
- HEAD:指向最后一次提交的结果(当前版本)
上一个版本表示:HEAD^
2.2. 添加和提交
将工作区的改动添加到暂存区(stage), 使用命令:
- git add filename
- git add *
- 注:这是Git基本工作流程的第一步
使用如下命令以实际提交改动
- git commit -m “代码修改提交信息”
- 注:该命令将修改已经提交到了HEAD,但是还没有到远程仓库
查看工作区的状态
- git status
查看文件被修改的内容
- git diff filename
2.3. 推送改动
Now, 你的改动已经在本地仓库的HEAD上。执行如下命令以将这些改动提交到远程仓库
- git push origin master
- 注:可以把master换成你想要推送的任何分支
当我们没有克隆一个远程仓库到本地,但又想将仓库链接到远程的服务器,可以执行如下命令
- git remote add origin server
- 注:这样你就可以将改动的数据推送到所添加的服务器上去了
2.4. 替换本地改动
当操作失误或需要还原文件时, 可使用如下命令替换掉本地的改动
- git checkout – filename
- 注:此命令会使HEAD中的最新内容替换掉你工作目录中的文件。已添加到暂存区的改动或新文件都不会受影响。
我们可以将不小心已经缓存的修改从暂存区撤销掉,可以执行如下命令
- git reset HEAD – filename
- 注:简言之,取消 git add 的添加; 此外,git reset 还可以回退版本
丢弃本地所有改动和提交,可以到服务器获取最新版本历史,并将你本地主分支指向它。
- git fetch origin
- git reset –hard origin/master
3. 分支
3.1. 创建和删除
分支,是用来将特性(feature)开发隔离出来的。当你在创建仓库的时候,master
是默认分支。我们可以在其他分支进行开发,完成后将其合并到主分支(master)上。
创建一个
feature
分支, 并切换过去- git checkout -b feature_x
- git checkout -b feature_x
切换回主分支
- git checkout master
- git checkout master
再把新建的分支删掉
- git branch -d feature_x
- git branch -d feature_x
除非你将分支推送到远程仓库,否则该分支就是为他们不可见的
- git push origin feature_x
- git push origin feature_x
删除远程分支
- git push origin –delete [branch_name]
3.2. 更新与合并
更新你的本地仓库代码到最新,执行
- git pull
- 注:This cmd 将在你的工作目录中 获取(fetch) 和 合并(merge) 远程仓库的改动。
合并其他分支到你的当前分支(加入我要和并feature_x到master),执行
- git branch
- 查看当下分支是在master
- git merge branch
- git merge feature_x
- git merge feature_x
- git branch
在这两种情况下,git都会尝试去自动合并改动。但遗憾的是, 这个过程不是每次都会成功,可能出现冲突(conflicts), 这个时候你需要修改冲突文件并手动合并这些冲突。手动合并时可借助工具(Beyond Compare)比较文件差异。
改完之后,你需要执行如下命令以将他们标记为合并成功
- git add filename
在合并改动之前,你可以使用如下命令预览差异
- git diff source_branch target_branch
3.3. 重命名
在 git 中重命名远程分支:就是先删除远程分支,然后重命名本地分支,在提交一个新的远程分支
删除远程分支
- git push origin –delete [branch_name]
重命名本地分支
- git branch (-m|-M) [old_branch_name] [new_branch_name]
Push 改名后的分支
- git push –set-upstream origin [new_branch_name]
4. 标签
可用如下命令创建一个1.0.0的标签
- git tag 1.0.0 1b2e1d63ff
- 1b2e1d63ff 为你想要标记提交ID的前10为
添加注解标签:在 tag 命令执行时添加 -a 选项, 此时会启动编辑区添加注解; 亦可通过 -m “注解内容” 完成添加
- git tag -a [tagname]
- git tag -a [tagname] -m “连猴子🐒都能懂得Git”
可用如下命令查看ID(获取提交日志信息)
- git log
- git log
查看本地标签
- git tag
- git tag -n // -n 显示标签的列表和注解
删除本地标签
- git tag -d tag_name
- git tag -d tag_name
推送标签到远程服务器
- git push origin tag_name
- git push origin tag_name
删除远程标签
- git push origin :refs/tags/tag_name
5. 日志
使用如下命令了解本地仓库的历史纪录
- git log
你可以添加选项来修改他的数据,从而得到你想要的结果,只看某一个人的提交记录
- git log –author=bob
一个压缩后的,每条记录只占一行的输出
- git log –pretty=online
看看文件的改变记录
- git log –name-status
6. 远程仓库
6.1. 设置远程地址
修改
- git remote set-url origin [url]
- git remote set-url origin [url]
先删后加
- git remote rm origin
- git remote add origin [url]
直接修改配置文件
7. Git 工作流
8. FAQ
8.1. 配置Git账号
- git config –global user.email “you@example.com”
- git config –global user.name “Your Name”
- 注: 添加 –global 表示全局配置,不加则只配置该仓库
8.2. 提高Github Clone速度
8.3. 密码相关
8.4. error fatal: HttpRequestException encountered
9. See Also
Thanks to the authors 🙂