编程教育资源分享平台

网站首页 > 后端开发 正文

git常用命令总结

luoriw 2024-01-31 12:29:11 后端开发 11 ℃ 0 评论

一、提交本地代码到本地仓储,并提交到远程仓库

$ cd project_dir    // 进入工程目录
$ git init    // 初始化git仓库   
$ git add .    // 添加文件到本地仓库     
$ git commit -m "init commit"    // 提交代码到本地仓库 
$ git remote add origin git@github.com:test/test.git // 建立本地仓库和远程仓库的关联
$ git push origin master    // 提交本地仓库中的代码到远程仓库 

二、直接克隆远程仓库到本地目录并建立关联

$ git clone https://github.com/gin-gonic/gin.git [local_dir]

当local_dir有值时,源文件会直接clone到该目录下,如果没有local_dir值,会自动创建gin目录,并将源码clone到该目录下。

三、合并远程master仓库源码到本地temp仓库

// 方法一
$ git branch // 在temp分支下
$ git fetch origin master //从远程的origin仓库的master分支下载代码到本地的temp分支
$ git log -p master.. origin/master //比较本地的仓库和远程仓库的区别
$ git merge origin/master //把远程下载下来的代码合并到本地仓库,远程的和本地的合并
// 方法二
$ git fetch origin master:temp //从远程的origin仓库的master分支下载到本地并新建一个分支temp
$ git diff temp //比较master分支和temp分支的不同
$ git merge temp //合并temp分支到master分支
$ git branch -d temp //删除temp

四、git创建与合并分支

1、创建dev分支,然后切换到dev分支

$ git checkout -b dev

-b 参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev

2、查看当前分支

$ git branch

3、然后就可以在dev分支上开发并在dev分支提交,提交完切换到master分支

$ git add readme.txt    // 在dev分支添加readme.txt文件
$ git commit -m 'branch test'    // 提交dev本地分支
$ git checkout master    // 切换到master分支

4、把dev分支合并到master主干

$ git merge dev

5、合并完以后,删除dev分支

$ git branch -d dev

小结:

查看分支: git branch

创建分支: git branch <name>

切换分支: git checkout <name>

创建+切换分支: git checkout -b <name>

合并某分支到当前分支: git merge <name>

删除本地分支: git branch -d <name>

删除远程分支: git push origin --delete <name>

六、恢复git本地库删除的文件

// test.txt 代表文件名
$ git reset HEAD test.txt
$ git checkout test.txt

七、查看Git提交代码行数

// 按照提交人来进行统计
$ git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat: --since=2023-1-1 --until=2024-1-1 --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 --author="hanxiaojun" --since='2023-01-01' --until='2024-01-01' --pretty=tformat: --numstat -- . ":(exclude)vendor" | awk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "增加的行数 :%s 删除的行数:%s 总行数: %s\n",add,subs,loc }'

统计单个用户

八、git只合并某个分支的文件到master

如果只想将 feature 分支的某个文件f.txt合并到master分支上。

$ git checkout feature    // 切换到feature分支;
$ git checkout --patch master f.txt    // 合并master分支上f文件到feature分支上,将master分支上 f 文件追加补丁到feature分支上 f文件。

你可以接受或者拒绝补丁内容。

如果只是简单的将feature分支的文件f.txt copy到master分支上;

$ git checkout master
$ git checkout feature f.txt

九、比较两个分支或者两个版本的文件差异

$ git diff branch1 branch2 --stat //显示出所有有差异的文件列表
$ git diff branch1 branch2 文件名(带路径) //显示指定文件的详细差异
$ git diff branch1 branch2 //显示出所有有差异的文件的详细差异
// 比较同一分支下两个提交版本的差异
$ git diff fed9c3fe9e161ed0a68959954bb8a8c950dc8eae a20f5a03a243fea6344cc3fd9e66569bddedd3c3 --stat   
$ git diff origin/master --stat    // 本地分支与远程分支差异的文件列表
// 可以自己扩展比较的差异

十、忽略文件操作

$ git update-index --assume-unchanged FILENAME    // 添加本地忽略文件
$ git update-index --no-assume-unchanged FILENAME    // 恢复本地忽略文件
$ git ls-files -v // 查看本地未忽略文件列表

可以在 .gitignore 文件配置忽略文件和目录。

十一、git强制pull远程仓库代码,覆盖本地代码

如果想放弃本地更改,用远程的替换本地代码时,可以用下面方法:

git强制覆盖本地qa分支:

$ git fetch --all
$ git reset --hard origin/qa
$ git pull origin qa

当然如果你想有冲突文件保存本地更改的时候,可以将git reset --hard 换成 git reset --soft

十二、git贮藏与清理

$ git stash    // 贮藏变动
$ git stash list    // 查看贮藏列表
$ git stash apply    // 恢复贮藏
$ git stash drop stash@{0}
$ git stash pop    // 来应用贮藏然后立即从栈上扔掉它

详细使用方法请参考: https://blog.csdn.net/qq_38666502/article/details/121869347

十三、 git tag操作

// 创建tag
$ git tag -a <tagname>
// 查看tag
$ git show-ref --tags
// 或者
$ git tag -l
// 删除本地tag
$ git tag -d <tagname>
// 删除远程tag
$ git push origin :refs/tags/<tagName>

最后附上一张图,拿走不谢。

git常用命令

【有错误请在评论区指正,有疑问或者有自己常用git命令请在评论区留言,谢谢。】

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表
最新留言