git基本使用

Linux安装git

下载: git-2.25.4.tar.gz

1、卸载git
yum -y remove git
2、下载git
https://github.com/git/git/releases
1、解压
tar -zxvf git-2.25.4.tar.gz
2、安装编译所需依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
3、编译git源码
make prefix=/usr/local/git all
4、安装git至/usr/local/git路径
make prefix=/usr/local/git install
5、配置环境变量 vi /etc/profile
# 在底部加上如下
export PATH=$PATH:/usr/local/git/bin
6、刷新环境变量
source /etc/profile
7、查看Git是否安装完成
git --version

至此,源码编译安装git完成。
如果还是使用的yum安装的git版本,则可以执行如下语言
mv /usr/bin/git /usr/bin/git1
克隆指定的分支:
git clone -b 分支名  仓库地址



git clone 默认是克隆Head指向的master分支,如果是多分支,我们可以单个克隆分支项目。

1.只克隆单分支(非master):

git clone -b 分支名 https://xxx.git
git clone -b my-feature-branch https://github.com/username/repository.git

2.克隆所有分支(多分支)
cd xxx  //切换到项目目录
git branch -a  //列出所有分支名称如下: * 号表示当前分支
  * master  
  remotes/origin/HEAD -> origin/master
  remotes/origin/desktop
  remotes/origin/dev
  remotes/origin/template

由上结果可以看出,远程仓库origin还有desktop、dev、template等分支。接下来,可以在本地新建分支并与远程仓库的分支进行关联了。
// 作用是checkout远程仓库origin的分支template,在本地起名为template分支,并切换到本地的template分支 
git checkout -b template origin/template   
// 作用参见上一步解释
git checkout -b dev origin/dev    

yum -y install git
查看Git是否安装完成以及查看其版本号
git --version
顺便说一下,yum安装git被安装在/usr/libexec/git-core目录下



===============
1、进入git在GitHub上发布版本页面
https://github.com/git/git/releases,这个页面我们可以找到所有git已发布的版本。这里我们选择最新版的tar.gz包。

tar -zxvf git-2.22.0.tar.gz
cd git-2.22.0

yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker expat-devel

yum -y remove git
7、编译git源码
make prefix=/usr/local/git all
8、安装git至/usr/local/git路径
make prefix=/usr/local/git install

vi /etc/profile 
在底部加上
export PATH=$PATH:/usr/local/git/bin

11、查看Git是否安装完成
git --version



查看远端地址 git remote –v 
查看配置 git config --list
git status

git add .  // 暂存所有的更改
git checkout . // 丢弃所有的更改
git status // 查看文件状态
git commit -m "本次要提交的概要信息" // 提交

设置远端仓库地址 
git remote set-url origin 你的远端地址 
git push origin master出现以下情况:



解决办法:删除当前key,然后重新生成key,





首先假设刚刚从别人的仓库中clone了项目在本地
现在你在自己的github上刚刚创建了一个仓库,想要去存放你clone下来的项目,那么,下面这几件事情是你要去做的

1.取消掉与别人的仓库简历的远程链接
git remote rm origin

2.将本地库与我的远程仓库链接
git remote add origin xxxxx

3.push
git push -u origin master

git设置用户签名

项目级别:
仅在当前本地库范围内有效信息保存位置:./.git/config 文件

git config user.name michael
git config user.email michael_linux@163.com

查看当前用户项目基本的配置

git config user.name
git config user.email

系统用户级别:
登录当前操作系统的用户范围:信息保存位置:~/.gitconfig 文件

git config --global user.name michael
git config --global user.email michael_linux@163.com

查看当前系统用户级别的配置:

git config --global user.name
git config --global user.email

级别优先级
1)就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
2)如果只有系统用户级别的签名,就以系统用户级别的签名为准
3)二者都没有不允许

1 初始化本地库

git init

2 查看本地库状态

git status

3.3.1 首次查看( 工作区没有任何文件)

3.3.3 再次查看( 检测到未追踪的文件)
新增文件 aa.txt

3.4 添加 暂存区
3.4.1 将工作区的文件添加到暂存区

git add 文件名

3.4.2 查看状态( 检测到暂存区 有新文件)

3.5 提交 本地库
3.5.1 将暂存区的 文件 提交到本地库

1)基本语法

git commit -m "日志信息 " 文件名

2)案例实操

3.5.2 查看状态(没有文件需要提交)

3.6.1 查看状态(检测到工作区有文件被修改)
3.6 修改文件aa.txt后

3.6.2 将修改的文件再次添加暂存区

3.6.3 查看状态( 工作区的修改添加到了暂存区)

3.7 历史版本
3.7.1 查看历史版本
1 基本语法

# 查看版本信息
git reflog
# 查看版本详细信息
git log

3.7.2 版本穿梭
1 基本语法

git reset --hard 版本号

git reset --hard 814bd2a
Git 切换版本,底层其实是移动的HEAD 指针;

git的分支

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

4.3.1 查看分支
1 基本语法

git branch -v

在这里插入图片描述

4.3.2 创建分支

创建一个分支myfirstbranch
git branch myfirstbranch
查看分支
git branch -v

4.3.4 切换分支
1 基本语法

git checkout 分支名
切换分支
git checkout master
git checkout myfirstbranch
查看分支
git branch -v

4.3.5 合并分支
1 基本语法
git merge 分支名
2)案例实操 在 master分支上合并 hot-fix分支
Layne@LAPTOP Layne MINGW64 /d Git Space/SH0720 master
$ git merge hot fix

1.linux中Git安装

./config
make
sudo make install

2.配置

cd gitspace/
mkdir first-project
cd first-project/
git init
Initialized empty Git repository in D:/devData/gitspace/first-project/.git/

ls -la .git/
total 11
drwxr-xr-x 1 michael 197121   0  322 08:25 ./
drwxr-xr-x 1 michael 197121   0  322 08:25 ../
-rw-r--r-- 1 michael 197121 130  322 08:25 config
-rw-r--r-- 1 michael 197121  73  322 08:25 description
-rw-r--r-- 1 michael 197121  23  322 08:25 HEAD
drwxr-xr-x 1 michael 197121   0  322 08:25 hooks/
drwxr-xr-x 1 michael 197121   0  322 08:25 info/
drwxr-xr-x 1 michael 197121   0  322 08:25 objects/
drwxr-xr-x 1 michael 197121   0  322 08:25 refs/

项目级别/仓库级别:仅在当前本地库范围内有效信息保存位置:./.git/config 文件

git config user.name michael
git config user.email michael_linux@163.com

系统用户级别:登录当前操作系统的用户范围:信息保存位置:~/.gitconfig 文件

git config --global user.name michael
git config --global user.email michael_linux@163.com

查看当前用户的配置

git config user.name
git config user.email
git config --global user.name
git config --global user.email

级别优先级
1)就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
2)如果只有系统用户级别的签名,就以系统用户级别的签名为准
3)二者都没有不允许


Eclipse使用git

1、编辑本地忽略配置文件,文件名任意(例:Java.gitignore)

GitHub 官网样例文件
https://github.com/github/gitignore
https://github.com/github/gitignore/blob/master/Java.gitignore

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

.settings
.project
.classpath
target

在~/.gitconfig 配置文件中引入上述文件

[user]
	name = michael
	email = michael_linux@163.com

[core]
	excludesfile = D:/dev/GitIgnore/Java.gitignore

[注意:这里路径中一定要使用“/”,不能使用“\”]

#进入当前用户的家目录
cd ~
#删除.ssh目录
rm -rvf .ssh
#运行命令生成.ssh 密钥目录
ssh-keygen -t rsa -C michael_linux@163.com
#查看id_rsa.pub文件内容
cat ~/.ssh/id_rsa.pub
#复制id_rsa.pub文件内容,登录GitHub,点击用户头像→Settings→SSH and GPG
keys
 New SSH Key
 输入复制的密钥信息
 回到Git bash 创建远程地址别名
git remote add origin_ssh git@github.com:atguigu2018ybuq/huashan.git
推送文件进行测试


测试
ssh -T git@gitee.com

4、git拉取远程代码

git fetch + git merge
git fetch只从远程拉最新的代码,并修改本地缓存的远程分支的commitID,git fetch之后使用git status就会看到本地分支落后远程分支这种提示。

git pull
git pull会做git fetch同样的工作,此外还会将远程分支直接合并到本地分支。

5、合并分支代码

5.1、命令行操作

1.1、开发分支dev 合并到 master 分支

git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master

1.2、master 分支 合并到 开发分支dev

git checkout master 
git pull 
git checkout dev
git merge master 
git push -u origin dev

5.2、WebStorm操作

5.2.1、Merge-合并

Merge incoming changes into the current branch (将传入的更改合并到当前分支)。

一般比较常见的操作都是通过Merge进行的合并。但是该合并方式下有多种策略,并不是无脑的将文件内容同步。
主要有:Fast-foward,Recursice,Ours,Octopus 等几种策略。git会自动根据commit的提交记录集选择合适的策略进行合并操作。

5.2.2、Rebase-变基

Rebase the current branch on top of incoming changes(在传入更改的基础上重新设置当前分支的基址)

我们的分支合并如果弄错了。会出现已经修改的代码被合并错误了。
相较于Merge的分支合并,Rebase会改变提交的历史,这也是为什么它是会在更新基础上重置当前分支。

windows中Git安装

git --version

9、git查看代码行数

1.查看总提交行数、移除行数、项目总行数

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 }'

2.查看个人提交的代码行数统计

git log --author="username" --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 }' -

3.查看项目每个人提交的代码行数统计

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --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 }' -; done

4.查询所有用户的提交总次数

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r

9.1、git 查看代码行数

在git中查看代码行数的方法比较简单。只需要使用git的ls-files命令,然后将输出结果通过xargs传给wc进行计数即可。

git ls-files | xargs wc -l
上面这个命令会输出代码仓库中所有文件的行数之和。如果只需要查看某一个文件的行数,可以直接使用wc命令:

wc -l path/to/file
该命令会输出特定文件的行数。

git ls-files | xargs wc -l | grep 'total' | awk '{print $1}'

9.1、git查询提交代码行数

要查看某个提交的代码行数,可以使用git diff命令。该命令可以比较两个提交之间的差异,并输出差异信息。使用该命令时,只需将两个提交的哈希值作为参数传入即可。

git diff {commit1} {commit2} --shortstat

上述命令会输出两个提交之间增加和减少的代码行数。

9.1、git log查看代码行数

要查看代码仓库历史中所有提交的代码行数,可以使用git log命令。该命令默认会输出所有提交的哈希值,作者信息,提交时间和日志信息。可以使用选项–oneline和–short对输出进行简化,然后通过awk和sed等命令进行计数。

git log --oneline --short | awk '{print $1}' | sed 's/^/git diff /' | bash | grep "files changed" | awk '{sum += $4} END {print sum}'

上述命令会输出所有提交之间新增和删除的代码行数之和。

9.1、git查看代码提交行数

如果需要查看某个作者的提交代码行数,可以使用git log命令的–author选项来过滤提交信息。再将输出结果通过awk和sed等命令进行计数。

git log --oneline --author={author name} | awk '{print $1}' | sed 's/^/git diff /' | bash | grep "files changed" | awk '{sum += $4} END {print sum}'

上述命令会输出指定作者提交之间新增和删除的代码行数之和。

9.1、gitlab查看代码量

如果代码仓库使用gitlab进行管理,可以通过在项目仪表盘中查看代码仓库的统计信息。包括代码行数、文件数和提交数量等等。

要查看单个文件的代码行数,可以在gitlab的文件浏览器中打开特定文件,然后通过文件信息中的"行"信息进行计数。

9.1、git代码行数

git代码仓库中的代码行数可以通过git的API接口进行获取。只需使用curl命令向接口发送请求即可。

curl https://api.github.com/repos/{organization}/{repository}/languages | jq 'to_entries | map(select(.key != "Other")) | map(.value) | add'

上述命令会输出代码仓库中所有语言的代码行数之和。

9.1、git查看代码路径

要查看代码仓库中某个文件的路径,可以使用git的–grep选项来搜索特定文件名。

git grep --name-only {file name}

该命令会输出所有包含特定文件名的文件路径。

9.1、git 统计代码行数

在较大的代码仓库中统计代码行数需要使用一些特殊的工具。例如,可以使用cloc来统计代码行数。

cloc path/to/repository

上述命令会输出代码仓库中所有语言的代码行数统计结果。

9.1、git查看代码提交记录

要查看某个提交的详细提交记录,可以使用git log命令。该命令默认会输出所有提交的哈希值,作者信息,提交时间和日志信息。可以使用选项–oneline和-g选项对输出进行简化。

git log {commit} --oneline -g

9.1、查询所有用户的提交总次数

git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r

根据时间查询次数

git log --after="2023-01-01 00:00:00" --before="2023-12-31 23:59:59" --pretty='%aN' | sort | uniq -c | sort -k1 -n -r

9.1、gitee统计,各用户提交行数

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --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 }' -; done

根据时间查询行数

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --after="2023-01-01 00:00:00" --before="2023-12-31 23:59:59" --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 }' -; done

9.1、查看对应日期个人代码提交量

git log --author="$(git config --get user.name)" --since=2023-01-01 --until=2023-12-31 --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 }'
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值