【Missing Semester】版本控制(Git)
作者:互联网
本文为计算机教育中缺失的一课 The Missing Semester of Your CS Education 笔记
Git 工作流程
Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。
- 工作区、暂存区、仓库
- 已修改、已暂存、已提交
Git 命令行接口
基本操作
创建仓库:
- 使用当前目录作为 Git 仓库,该命令执行完后会在当前目录生成一个 .git 目录。
cd ~/desktop/tmp
git init
# 已初始化空的 Git 仓库于 /Users/wangxinyuan/Desktop/tmp/.git/
ls .git
# HEAD description info refs
# config hooks objects
提交与修改:
-
添加文件到暂存区:
git add <filename>
。 -
将暂存区内容添加到仓库中:
git commit -m '提交说明'
。 -
查看仓库当前的状态,显示有变更的文件:
git status
。- 状态简览:
git status -s
。未track
的文件前为??
,暂存区的文件前有A
,修改过的文件前有M
标记。 输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态。
- 状态简览:
-
显示与暂存区文件的差异:
git diff <filename>
。- 显示某个文件两个版本之间的差异:
git diff <revision> <filename>
。
- 显示某个文件两个版本之间的差异:
-
删除工作区文件:
git rm
。 -
移动或重命名工作区文件:
git mv
。 -
显示历史日志:
git log
。- 可视化历史记录:
git log --all --graph --decorate
。 - 查看历史记录的简洁的版本:
git log --oneline
。
- 可视化历史记录:
例——add、commit:
- 先使用
add
将文件添加到暂存区,再使用commit
将暂存区内容提交到仓库。
例——diff:
例——log:
分支合并
- 显示分支:
git branch
。 - 创建分支:
git branch <branchname>
。 - 切换分支:
git checkout <branchname>
。 - 创建分支并切换到该分支:
git checkout -b <branchname>
。 - 删除分支:
git branch -d <branchname>
。 - 合并分支(将
branchname
合并到当前分支):git merge <branchname>
。- 合并冲突:咕咕咕~
例——branch:
撤销
- 回退版本:
git reset <--soft | --mixed | --hard> <HEAD>
。 - 在工作空间但是不在暂存区的文件撤销更改:
git restore
。
I committed and immediately realized I need to make one small change!
-
git commit --amend
。 -
这个命令会将暂存区中的文件提交。
-
如果自上次提交以来你还未做任何修改,那么快照会保持不变,而你所修改的只是提交信息。
-
如果
git commit -m 'commitA' git add forgotten_file git commit --amend
最终你只会有一个提交——第二次提交将代替第一次提交的结果。
取消暂存的文件:
-
git reset HEAD <file>
。 -
例:
git add READ.md git add CONTRIBUTING.md git reset HEAD CONTRIBUTING.md
- 处于暂存状态的文件只有
READ.md
。
- 处于暂存状态的文件只有
-
这是个危险的命令。
I need to undo my changes to a file!
-
git checkout [saved hash] -- <file>
。 -
例:
git log # find a hash git checkout [saved hash] -- path/to/file
-
这是个危险的命令。
远端操作
- 查看当前配置有哪些远程仓库:
git remote
。 - 添加远程库:
git remote add <name> <url>
。 - 从现有 Git 仓库中拷贝项目:
git clone <git 仓库> <本地目录>
。 - 从远程获取代码库:
git fetch
。 - 下载远程代码并合并:
git pull <name> <远端分支名>:<本地分支名>
,相当于git fetch; git merge
。。 - 上传远程代码并合并:
git push <name> <本地分支名>:<远端分支名>
- 删除远程仓库:
git remote rm <name>
。
高级操作
咕咕咕~
Git 配置
-
使用配置文件
~/.gitconfig
或命令行接口git config <选项>
进行配置。 -
配置项指定 Git (如 log diff)运行时的分页器:
- 在命令行中执行:
git config --global core.pager ''
; - 或修改
~/.gitconfig
,在其中[core]
部分添加paper=
。
- 在命令行中执行:
-
图形界面工具
SourceTree
。 -
更多配置,咕咕咕~
参考
标签:文件,Git,版本控制,暂存区,--,Semester,git,add 来源: https://www.cnblogs.com/wxy4869/p/15962059.html