Git笔记
Git结构
- 工作目录 work directory
- 暂存区 stage
- 本地仓库 repository
- 每台电脑都有一个
- 远程仓库 remote
- 多台电脑共用一个,位于服务器
注意:
- 文件提交时,必须1->2->3->4逐步提交
- 文件可以依次检出,也可以直接从remote检出到work directory
- 内置小的linux系统,支持linux命令
基本命令
config
1 | git config --global -l |
init, add
位于任意文件夹,创建本地仓库.git
外面即为work directory, 所创建文件默认处于未追踪 untracked 状态,需要add,进入暂存区stage
1 | git init |
每次文件修改后,都需要再次add和comit
1 | git add hello.txt |
.gitignore
直接写入文件名
支持正则匹配
1 | # 匹配所有txt文件 |
rollback
将work directory恢复到指定的提交状态
1 | git reset --hard commitID |
branch
不同分支下文件内容相互隔离
1 | git branch |
1 | # 首先切换到staging |
注意:
- merge并不改变另一个分支,只是把另一分支的修改合到当前分支上(提交的合并,非分支的合并)
rebase
变基
1 | git chechout test |
cherry-pick
优选,灵活选取其他branch的某些更新
1 | git cherry-pick commitID #单独合并一个提交 |
远程仓库GitHub
本地推远程
1 | git remote add origin https://github.com/.../... |
远程克隆本地
1 | git clone https://github.com/.../... |
解决不同步
1 | git fetch origin |
实战
远程本地均多分支
1 | #根据远程拉本地: 先建新分支, |
原理:
- github看似是同步file,其实是基于node,同步node
- 因此需要确保要同步的branch不能有divergence,即dev branch必须修改于staging branch的最新状态,而不是之前的旧状态
- 为此,需要在每次commit前先pull,保证同步