//本帖为总结帖
//常见用法程序总结
//开发流程总结
概念
什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 在本书所展示的例子中,我们对保存着软件源代码的文件作版本控制,但实际上,你可以对任何类型的文件进行版本控制。
1、GIt学习总结
- 一、如何安装git
下载地址:
https://git-scm.com/download/win
2、使用GIT
参考Git教程
这个教程具体介绍了GIT的常见用法和远程服务。
2.1、 用户信息
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:
#用户信息
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
再次强调,如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。
2.2、 常用命令
- 初始化工作
#移动到项目目录
cd D:/WorkSpace/GitProject
#初始化
git init
- 查看状态
#查看状态 可选选型[-s 简短]
git status
- 查看日志
git log
#查看提交内容区别 [-n]最近n次
git log -p -2
#总结说明
git log --stat
#按格式输出
$ git log --pretty=format:"%h - %an, %ar : %s"
#显示分支情况
git log --pretty=format:"%h %s" --graph
#限制长度 [--since] [--until]
git log --since=2.weeks
- 暂存
#暂存
git add .
- 提交
#调用文本编辑
git commit
#一行注释
git commit -m "comment"
#跳过暂存提交
git commit -a
- 版本回退
#退回上一版本
git reset –hard HEAD^
#指定版本回退
git reset –hard 21a77
#查看旧版本
git reflog
- 撤销暂存
#将未添加到暂存区的文件撤销.
git checkout xxx
- 查看区别
#查看当前目录和暂存文件区别
git diff
#查看暂存和已提交文件区别
git diff --staged
- 移除
#删除本地
rm x.c
#删除仓库
git rm x.c
#提交更改
git commit
#将删除的文件回溯
git checkout – test.txt
#取消文件跟踪
git rm --cached <file>
git rm -r --cached <dir>
- 忽略文件
#在文件夹下创建.gitignore文件
vim .gitignore
#内部写上要忽略的文件;
#可以用正则表达式
*.txt
*.o
*.a
- 重命名
git mv NEWname Oldname
2.3、分支
#创建分支
git checkout -b dev
#查看分支
git branch
#切换
git checkout master
#合并,需要在master下
git merge dev
#删除子分支 [d][D]
#若没有合并想删除分支用D
git branch –d dev
- 储藏与清理
#存储更改到栈,但不提交
git stash [save] "name"
#查看存储栈
git stash list
#应用存储栈中版本 <file>:stash@{2}
git stash apply
#删除栈中暂存
git stash drop
git stash pop
2.4、远程仓库
#查看远程仓库
git remote
#显示远程仓库URL的简写
git remote -v
#添加远程仓库
git remote add pb https://github.com/paulboone/ticgit
#克隆
git clone https://github.com/schacon/ticgit
#抓取
git fetch [remote-name]
#推送
git push [remote-name] [branch-name]
git push origin master
#重命名
git remote rename pb paul
3、实战
3.1、开始一个项目–从云端克隆
创建一个项目保存代码,在Github上创建一个项目,并克隆到本地仓库。
- Github创建项目
创建项目后,把地址复制下来。
- 克隆
在本地文件夹中初始化仓库,
git init
从云端克隆项目;
git clone https://github.com/li-lyapunov/LearnJava.git
此时,项目克隆完成。 - 将完成的项目上传到云端
首先需要添加远程仓库,使用命令git remote add LJ https://github.com/li-lyapunov/LearnJava
即添加了远程仓库,并命名为LJ。
完成项目后,使用命令git push LJ master
即可把本地提交的项目推送到云端。
3.2、使用分支开发
一般项目只有一个主分支master,在开发时,要开辟各种分支进行处理,之后再与主分支合并。
- 首先,新建一个分支进行开发
git checkout -b chapter6
创建一个新分支第六章。 - 编辑完成进行合并
首先需要移动到主分支,注意移动前需要将子分支提交,git checkout master
将子分支合并到主分支上,git merge chapter6
之后将子分支删除,git branch -d chapter6
。
使用子分支开发,会更安全。
3.3、.gitignore文件
.gitignore文件作用是屏蔽掉不需要的文件,比如编译过程的中间文件.o或.class文件,这些文件每次都会生成,但是又不需要,因此需要屏蔽掉。
在github上有专门整理的各种工程的.gitignore文件。
参考:Git .gitignore 设置为全局global
附上github上总结的工程ignore文件,A collection of .gitignore templates
临时的.ignore文件直接复制到本地即可。
3.4、开始一个项目–本地上传到云端
如果一个项目已经做完了,此时想上传到云端,只需要在云端新建一个空项目,建完之后,系统提示如下:
此处,本地已经有项目了,因此只需要将本地项目同步到云端即可。
git remote add origin ****
git push -u origin master
3.5、撤销修改
如果我们写一个程序,发现写错了,有bug,不想要更改了。
- 未添加到暂存区
git checkout xxx
- 已添加
如果已经执行了add命令,需要先取消添加,
git reset HEAD xxx
此时文件变为未添加状态,再执行撤销
git checkout xxx
3.6、取消未保存更改
如果有时候,改了程序,发现有bug。此时还没有添加到暂存区,不想要这个修改怎么办。
撤销所有未提交修改,只需要运行:
git stash
git stash drop
4、如何进行多人协作
5、常见错误
5.1、failed to push some refs to
这个错误的原因是在Github上面改动了文件,但是本地仓库没有更新。
如果在云端仓库新建一个README.md
文件,就会出现这种报错。
使用命令git pull -rebase LJ master
将文件同步,之后就可以欢快的推送到Github上了。
5.2. Filename too long
git config –global core.longpaths true
其中-global是全局,如果只想对本版本库设置,去掉global
5.3.中文乱码
如果文件名是中文,可能出现中文乱码,此时可以使用命令git config --global core.quotepath false
,其中–global是全局设置,如果只设置此文件夹下,可以去掉。
参考:问题:git处理中文名称时候显示为编码形式(已解决)