一些常用的Git命令。
1.与Svn命令对比
场景 | Svn | Git |
下载代码 | svn checkout | git clone |
加入版本控制 | svn add | git add |
本地提交 | – | git commit |
提交到服务器 | svn commit | git push |
获取其他人的更新 | svn update | git fetch/pull[fetch不会自动merge,pull自动merge] |
查看状态 | svn status / log / diff | git status / log / diff |
新建本地分支 | – | git branch |
切换分支/版本 | svn switch | git checkout |
合并分支 | svn merge | git merge/rebase |
2.git add忽略特定文件:
vim .gitignore
*.pyc
*.pyo
*.log
*.out
*.bak
*.tmp
*.gz
*.tar
*~
*.swp
.DS_Store
core.*
output
log
output
._*
.vscode
.idea
3.设置单次提交文件最大大小:
git config --global http.postBuffer 1048576000 #1G
4.github上传>100M文件的方法:
1.安装git-lfs # https://git-lfs.github.com/
brew install git-lfs
or
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt install git-lfs
2.设置git-lfs
cd ${project_path}
git lfs install
git lfs track "*.tgz" or vim .gitattributes
git add .gitattributes #.gitattributes中配置的*.tgz文件会自动上传到gitlfs
3.按平时的git操作即可
git add yourLargeFile.tgz
git commit -m "Add Large file"
# git config lfs.https://gitxx/xxx.git/info/lfs.locksverify false # if get Remote "origin" does not support the Git LFS locking API
# rm .git/hooks/pre-push # if get Message: LFS only supported repository in paid or trial enterprise.: exit status 1
git push
# Uploading LFS objects: 100% (1/1), 114 MB | 0 B/s, done
4.不拉取lfs文件的方法
GIT_LFS_SKIP_SMUDGE=1 git clone <repository-addr>
GIT_LFS_SKIP_SMUDGE=1 git pull
git lfs uninstall
rm .gitattributes
*注:国内的Gitee LFS功能只对付费企业开放,免费用户只能上传不能下载,需要注意(也可以考虑切割成<100M的文件用普通方式上传)。
5.丢弃本地提交,强制回到线上最新版本
git fetch --all
git reset --hard origin 需要下拉的分支(默认master)
git fetch
6.确保不push带自动merge的提交,保持评审历史线性
git log --pretty=oneline --decorate --graph #找到merge节点
git reset 833011(merge节点之前的commitid)
git add .
git commit -m "xxx"
git push
7.将其他分支的commit合并到当前分支
# 切换到目标分支
git checkout RB_1-0-1
# 将其他分支的commit内容同步到当前分支中
git cherry-pick <commitId>
# 查看通过过来的commit内容
git diff