Git简单用法

Git是个分布式版本控制系统。Git不是万能的,他仅仅是个工具,用的好不好与使用的人有很大的关系,他需要使用Git的人对Git管理的内容有很清晰的理解,特别是处理冲突的时候。

目前使用图形客户端SourceTree + 终端的方式使用Git,对于Git最喜欢的就是她轻量级的分支。

Git托管平台除了著名的Github之外还有开源自行搭建Gitlab,国内的OSChineCodingGitCafe等。用Git + VPS搭建私有无界面的服务器也是可以的。

基本命令

1
2
3
4
5
6
7
8
9
git init // 初始化仓库
git clone [url] // 通过clone已有项目初始化仓库
git remote add origin [url] // 添加远程跟踪仓库
git status // 查看仓库状态
git add [filename] // 添加跟踪文件
git commit -m 'message' // 写提交信息并提交到本地仓库
git commit --amend // 修改最后一次提交信息
git push origin master // 推送代码到origin仓库的master分支
git pull origin master // 从origin仓库的master拉起代码到本地

分支

Git的分支是非常轻量级的,创建和删除分支都很方便。

1
2
3
4
5
6
7
8
9
10
11
git branch // 列出所有本地分支
git branch -r // 列出所有远程分支
git branch test // 新建test分支
git branch -m old new // 重命名分支
git branch -d test // 删除test分支,当前分支不是test才可删除
git branch -D test // 强制删除test分支
git branch --set-upstream test origin/dev //将本地test分支与远程dev分支之间建立链接
git checkout [file,branch,tag] // 切换文件、分支、标签
git checkout -b test dev // 基于dev新建test分支,并切换到test分支
git merge dev // 将dev分支合并到当前分支
git merge --squash dev // 合并压缩,将dev上的commit压缩为一条

重要

有时候其他人不小心做了错误的操作并提交,可以用revert新建一个commit,用于撤销他的提交,他哪次提交所修改的内容都会被撤销,并且应用到当前分支。

1
git revert [commit]

重置当前分支的状态为指定commit

1
2
git reset [commit] // 同时重置暂存区,但工作区不变
git reset --hard [commit] // 同时重置暂存区和工作区

其他

1
2
3
4
git tag tagname // 新建标签
git push origin --tags // 推送所有标签到origin
git show // 显示所有信息
git log // 显示提交信息

常见错误

对windows 系统来说Git是不区分文件名的大小写的,也就是默认情况下修改了文件名的大小字母Git是不认为你做了变更的,需要修改配置来区分大小写,git config core.ignorecase false

有时候合并其他的代码的时候会报“The following untracked working tree files would be overwritten by merge”的错误,如果用git clean -d -fx "" 这个命令来处理的话会很危险,他会把你没有加入到版本控制的内容都清除掉,包括你写在.gitignore文件里的内容。最好是把错误信息里面提到的文件加入版本控制或者直接删除。