git
分布式版本控制系统
分布式:研究如何把一个需要巨大计算能力的才能解决的问题分成许多小的部分,把这些部分分配给多个计算机来处理,最后把这些结果综合起来得到最终的结果。
仓库
- 初始化仓库:
git init
- 克隆仓库:
git clone xxx
设置提交代码时的用户信息
git config --global user.name "username"
git config --global user.email "email"
去掉 --global 参数只对当前仓库有效
版本操作
- 显示提交日志:
git log
,其中一长串字符串是commit id
(版本号)。 - 回退版本:
git reset --hard HEAD^
表示回退到上一个版本。HEAD
表示当前版本,HEAD^
表示上一个版本,HEAD^^
表示上上个版本,HEAD~10
表示上10个版本 - 查看命令历史:
git reglog
,确定要回到未来哪个版本
分支操作
- 创建分支:
git branch <name>
- 切换分支:
git checkout <name>
orgit switch <name>
- 创建并切换分支:
git checkout -b <name>
orgit switch -c <name>
- 查看当前分支:
git branch
- 删除分支:
git branch -d <name>
- 合并某分支到当前分支:
git merge <name>
- 将本地分支推送到远程分支:
git push --set-upstream origin company_dev
基本操作
- 将内容写入暂存区:
git add .
- 将暂存区内容提交到本地仓库中:
git commit -m <msg>
- 可以指定文件提交:
git commit [file1] [file2] ... -m [message]
- 可以指定文件提交:
git push
:上传远程代码合并git fetch
: 将远程主机的最新内容拉到本地git pull
: 将远程主机的最新内容拉下来后直接合并,git pull = git fetch + git merge
warning: LF will be replaced by CRLF in 解决办法
首先问题出在不同操作系统所使用的换行符是不一样的,三大主流操作系统的换行符:
- Uinx/Linux采用换行符LF表示下一行(LF:LineFeed,中文意思是换行);
- Dos和Windows采用回车+换行CRLF表示下一行(CRLF:CarriageReturn LineFeed,中文意思是回车换行);
- Mac OS采用回车CR表示下一行(CR:CarriageReturn,中文意思是回车)。
在Git中,可以通过以下命令来显示当前你的Git中采取哪种对待换行符的方式
$ git config core.autocrlf
此命令会有三个输出,“true”,“false”或者“input”
- 为true时,Git会将你add的所有文件视为文本文件,将结尾的CRLF转换为LF,而checkout时会再将文件的LF格式转为CRLF格式。
- 为false时,line endings不做任何改变,文本文件保持其原来的样子。
- 为input时,add时Git会把CRLF转换为LF,而check时仍旧为LF,所以Windows操作系统不建议设置此值。