tips: 建远程库时最好有 README .md, 别空空荡荡的
区别其他版本控制
git 分为工作区, 版本库的暂存区和版本库的分支
git 操作的是文件的修改, 而不是文件. 我们在工作区修改过的文件 add 后进入暂存区, 再接着第二次修改后, 如果不 add, 直接 commit, 提交到分支里的是暂存区里的第一次修改
HTTPS 和 SSH
TODO
1. 建库
cd [localUrl] 进入本地目录
git init 初始化git
git remote add origin [remoteUrl] 关联远程仓库, origin 是远程库的默认代称.
2. 拉取
git pull origin master 拉取master分支里的仓库. master是默认主分支名称
或者
git clones [remoteUrl] 直接拉取全部仓库到本地
3. 提交
git add xxx
git commit -m "提交信息"
git push -u origin master 将本地的master分支推送到origin主机, 同时指定origin为默认主机
之后的提交不用-u, 直接 git push origin master就行
4. 后悔药-版本
git log 查看详细提交信息,版本号等
git log --pretty=oneline 查看精简提交信息, 只有版本号和提交描述
git reset --hard HEAD^ 回退上一个版本, HEAD^^回退上上个版本, HEAD~100往上100个版本
git reset xxxxxx 穿越到指定版本, 版本号还不必写全, git会自行查找, 但也不能太短
git reflog 再次打开terminal时查看之前用过的命令
5. 查看工作区
git status 查看工作区哪些文件修改了, 修改的记得add.
6. 后悔药-操作
git checkout -- file 撤销修改.一定要加--, 不然checkout是在切换分支.
cheout的结果: 1.只是修改, 回到修改前. 2.add进暂存区后又改了文件, 回到修改前也就是add后的
git reset file 撤销add.
7. 删除
git rm file
git commit -m "删除描述"
8. 分支
git checkout -b dev 创建并选择分支== git checkout dev + git branch dev.
git branch 查看所有分支
git branch dev 创建dev分支
git checkout dev 选择dev分支
在dev分支操作一同后, 开始合并
git merge dev dev合并进master
git branch -d dev 删掉dev, 强行删除把 D 大写
git log --graph 查看分支合并图
git merge --no-ff -m "保留分支信息的合并描述" dev 以后能看出这里做过合并
9. 临时保存现场
git stash 保存现场
git stash pop 恢复现场.并删除stash
或
git stash apply 恢复现场, 删除需要自己 git stash drop
git stash list 查看stash列表
git stash apply stash@{0} 恢复指定stash
10. 给提交打 tag
git tag v1.0 打tag, 默认给最新的commit
git tag vx 622222 给指定commit 打tag
git tag 查看tag
git tag -a v0.1 -m "version 0.1 released" 3628164 用 -a 指定 tag 创建说明文字 -m
git tag -s v0.2 -m "signed version 0.2 released" fec145a 给tag上密钥
git -d tag v0.1 删除tag
11. tag 推送到远程
git push origin v1.0
git push origin --tags 推送全部 tag
如果已经推送到远程, 删除tag会麻烦一点
git tag -d v0.9 先删除本地tag
git push origin :refs/tags/v0.9 在删除远程tag
拉取单个文件夹参考
- 初始化新仓库
git init
cd
git remote add –f - 打开 sparse-checkout 特性
git config core.sparsecheckout true - 配置.git/info/sparse-checkout, 列出你想要的 checkout 目录
echo some/dir/ >> .git/info/sparse-checkout
echo another/sub/tree >> .git/info/sparse-checkout - 拉取.(remote == name, branch 通常为 master)
git pull
报错
Everything up-to-date
- 没有 git add.
- 没有 git commit -m "提交信息"
Couldn't find remote ref master
- 仓库里什么都没, readme,.gitignore.....
参考
- Everything up-to-date
- 廖雪峰的git