Git 是 Linus Torvalds 除了 Linux 之外的另一杰作,是现如今使用最多的分布式版本管理工具。
环境搭建
git 分为客户端和服务端软件。
服务端可以自己搭建,也可以使用商业或公共的git服务器。自己搭建可以选择gitblit、GitLab,公共的平台可以选择github、gitee等平台。
git的客户端软件直接在git官网上下载,原客户端有shell和GUI,但是GUI不好用,Windows可以再安装TortoiseGit来改善GUI的交互。
Git仓库(CentOS)
- 创建用户git,用来管理运行git服务
- useradd
- passwd
- useradd
- Linux配置无密码SSH登陆
- Git Client:
ssh-keygen -t rsa -C "user@email"
生成密钥,在.ssh目录下,我们可以看到id_rsa和id_rsa.pub文件,id_rsa.pub为公钥(Windows目录:/c/Users/xxx/.ssh/id_rsa;如果是相同服务器地址重新添加,则需要删除原来的 known_hosts 对应的条目) - 在gitServer上我们首先查看/home/git/.ssh/authorized_keys,没有则创建
- 公钥id_rsa.pub的内容追加到authroized_keys中
ssh -l git <ServerIP>
,验证是否可以自动登陆(GitHub在添加了SSH Key之后,使用ssh -T git@github.com
验证)- Windows 配置无密码SSH登陆
- 在CMD中运行:
ssh-keygen
,id_rsa.pub 地址会在生成了之后显示。
- Git Client:
- 通过命令
sudo yum install git-core
,安装git(gitServer) - 使用命令
git --bare init /home/git/myRep
,初始化仓库 - 在gitClient上,通过git clone命令进行克隆远程仓库
- Git clone git@gitServer:/home/git/myRep
常用命令
查看系统配置
git config -l
配置用户
1
2git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"清除用户配置
1
2
3
4
5git config --global --unset user.name
git config --global --unset user.email
git config --local --unset user.name
git config --local --unset user.email
查看远程路径
git remote -v
本地提交到服务器
git push/ git push origin master
, 通常在commit之后从服务器拉回本地,即更新本地文件
git pull
将修改的文件恢复为最近提交版本或添加之前
git checkout xx_file
比较两次commit的差异
git diff fee9f9cf4b cdd577e352 xx_file
修改最近一次未提交的commit Log信息
git commit --amend
(如果你此时想要更新作者提交时间等也可以在amend之后加上 —date=”$(date -R)”)撤回未push的commit
1
2git reset --soft HEAD^
git reset HEAD~修改已push的commit信息
git commit --amend
git push -f
(强制提交)批量修改提交历史
http://www.cnblogs.com/rickyk/p/3981083.html
https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages切换历史版本
1、 查找历史版本
使用
git log
命令查看所有的历史版本,获取你git的某个历史版本的id
假设查到历史版本的id是fae6966548e3ae76cfa7f38a461c438cf75ba965。
2、 恢复到历史版本$ git reset --hard fae6966548e3ae76cfa7f38a461c438cf75ba965
3、 把修改推到远程服务器
$ git push -f -u origin master
Git 查看某个版本修改了哪些文件
git diff hash1 hash2 --stat
字符编码统一设置
1 设置git gui的界面编码git config --global gui.encoding utf-8
2 设置 commit log 提交时使用 utf-8 编码,可避免服务器上乱码,同时与linux上的提交保持一致!git config --global i18n.commitencoding utf-8
3 使得在 $ git log 时将 utf-8 编码转换成 gbk 编码,解决Msys bash中git log 乱码。git config --global i18n.logoutputencoding gbk
4 使得 git log 可以正常显示中文(配合i18n.logoutputencoding = gbk),在 /etc/profile 中添加:
export LESSCHARSET=utf-8
1 | git config --global gui.encoding utf-8 |
记住密码
git config --global credential.helper store
默认记住15分钟:
git config –global credential.helper cache
自定义配置记住1小时:
git config credential.helper ‘cache –timeout=3600’
Error
- windows使用git时出现:warning: LF will be replaced by CRLF
- 解决办法:(cmd)
$rm -rf .git
// 删除.git
$git config --global core.autocrlf false
//禁用自动转换
然后重新执行:
$git init
$git add .
</cmd>
http://blog.csdn.net/unityoxb/article/details/20768687
- 解决办法:(cmd)
- windows Git Bash :
git status
中文乱码(如:”\200\346\261\202”)- 解决办法:
git config --global core.quotepath false
- 解决办法:
- Windows 中使用 TortoiseGit 打开 SMB 中的目录时,提示添加safy路径
- 解决方法:
git config --global --add safe.directory *
- 解决方法:
文件拆分和合并
gitee 和 github 都有单个文件不得大于 100M 的上传限制,所以对于有的单个文件就需要分成多个。
以 gcc 编译器为例:
分割命令
1 | $ split -b 99m gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz_ |
合并命令
1 | cat gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz_* > gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz |
所以,对于下载之后对于前缀相同,后缀为 _aa、_bb 的文件需要执行合并操作以恢复文件。