介绍
Git(读音为/g?t/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
特点
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
- 生成补丁(patch),把补丁发送给主开发者,主开发者可以审核合并内容。
- 速度快,灵活,能很好的保留各个阶段修改内容。
- 离线工作,等有网了再提交修改内容。
- 分布式开发,强调个体。
- 在自己的机器上根据不同的开发目的,创建分支,修改代码,写好代码后提交代码。
使用
克隆仓库
# 克隆仓库到一个新目录
git clone $git_url
初始化仓库
# 设置为仓库
git init
# 设置并创建使用名为$branch的分支,$branch需要修改为指定的,例如Main,master
git init -b $branch
# 设置要提交的远程地址,$git_url为具体地址
git remote add origin $git_url
# 拉取分支内容
git pull origin $branch
# 如果上面出现报错,有可能原来的分支有内容了,需要进行下面的操作
git branch --set-upstream-to=origin/$branch $branch
git config pull.rebase true
git pull
# 提交代码
git add .
git commit -m $commit
git push -u origin $branch
切换/创建分支
# 查看分支
git branch
# 创建分支
git branch $branch
# 切换分支
git checkout $branch
# 创建+切换分支
git checkout -b $branch
# 合并某分支到当前分支
git merge $branch
# 删除分支
git branch -d $branch
# 删除远程分支
git push --delete origin $branch
# 查看远程分支
git branch -r
# 查看所有分支
git branch -a
提交代码
git pull
合并分支
在Feature分支,进行开发完成后,将修改内容合并到Master分支。rebase可以保留提交的修改内容。
git rebase master
使用merge进行合并分支(不推荐)
git merge master
设置
# 设置名字和邮件地址
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
# 设置代理
git config --global https.proxy http://127.0.0.1:1087
git config --global https.proxy https://127.0.0.1:1087
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
其他使用
# 查看git推送统计的代码行数
git log --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -
git log --author="Lucifer" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s ", add, subs, loc }' -
added lines: 3909, removed lines: 372, total lines: 3537
# 查看仓库提交者排名前 5
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 5
# 贡献者统计:
git log --pretty='%aN' | sort -u | wc -l
# 提交数统计:
git log --oneline | wc -l