git常用命令集合

开头来点理论了解一下git的版本管理以及HEAD:

  使用git的每次提交,Git都会自动把它们串成一条时间线,这条时间线就是一个分支。如果没有新建分支,那么只有一条时间线,即只有一个分支,在Git里,这个分支叫主分支,即master分支。有一个HEAD指针指向当前分支(只有一个分支的情况下会指向master,而master是指向最新提交)。每个版本都会有自己的版本信息,如特有的版本号、版本名等。。。。。理论巴拉巴拉的好烦,还是直接点好。

 

下载项目:git clone url 

下拉内容:git pull 或者 git fetch  ( git pull=git fetch+git merge )

暂存改变:git add . 或者 git add all

添加说明:git commit -m <说明>

撤销commitgit reset --soft HEAD^(HEAD^的意思是上一个版本,也可以写成HEAD~1;想撤回2次commit,使用HEAD~2)

提交内容:git push

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

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

添加仓库:git remote add origin <地址>  或者  git remote set-url --add origin <地址>

查看分支:git branch -a

创建分支:git branch <name>

修改分支名称:git branch -m <oldName> <newName>

新建并切换分支: git checkout -b <name>  (先检出具体的分支,再新建,新建出分支的内容为该分支的内容)

切换分支:git checkout <name>

本地分支推送到远程:git push -u origin <name>

合并分支:git merge <name>

查看文件状态:git status (查看文件,文件夹在工作区,暂存区的状态)

获取完整commit id:git rev-parseHEAD

获取short commit id:git rev-parse --short HEAD

 

git打tag记录版本号

列出已有tag:git tag

新建tag:git tag <name>

查看tag详细信息:git show <name>

给指定的某个commit号加tag:git tag -a <name> <short commit id> -m <说明>

将tag同步到远程服务器:git push origin <name>

本地删除某个tag:git tag -d <name>

远程服务删除tag:git push origin :refs/tags/<name>

 

修改仓库地址

查看仓库地址:git remote -v

删除仓库地址:git remote  rm origin

重新关联仓库地址:git remote add origin "新的仓库地址"

 

统计代码量

某时间段内的代码量:git log --since=2022-04-01 --until=2022-05-17 --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 --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 --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --since='2022-04-01' --until='2022-05-31' --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END{ printf "增加的行数:%s 删除的行数:%s 总行数: %s\n",add,subs,loc }' -; done

 

 

 

场景一:再多人开发的时候,有时代码的提交,合并时出现错误 ,想回退? 

 

  方法1:git reset(作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本)

      1. 先使用命令“git log”查看版本号(tip:按Q退出)

         2.“git reset --hard 目标版本号” 命令将版本回退到目标版本号

      3. 再用“git log”查看版本信息,此时本地的HEAD已经指向之前的版本

      4. 使用“git push -f”提交更改(tip:此时如果用“git push”会报错,因为我们本地库HEAD指向的版本比远程库的要旧)

 

  方法2:git revert( 作用通过反做创建一个新的版本,这个版本的内容与我们要回退到的目标版本一样,但是HEAD指针是指向这个新生成的版本,而不是目标版本)

      1.使用“git revert -n 返做版本号”(tip:这里可能会出现冲突,那么需要手动修改冲突的文件。而且要git add 文件名)

      2.使用“git commit -m 版本名”提交

      3.可以用“git log”查看本地的版本信息,可以看见多生成了一个新的版本

      4.使用git push推到远程仓库

 

以上参考来自:https://blog.csdn.net/yxlshk/article/details/79944535 里面的步骤更加详细

 

场景二: 一个项目传到多个远程仓库。。。。

  假设已经存在了一个名称为origin地址 。

 

  方法1:push一次全部更新

     1.使用 “git remote set-url --add origin <地址>”  添加新地址,可以通过 “git remote -v“ 查看是否添加成功。

        2.接着 ”git push“ ,完工so easy~

  

  方法2:一个一个push

       1.使用 "git remote add neworigin <地址>" ,同上查看。

       2.直接”git push“ 默认推推送的是origin, so再来一次 ”git push neworigin“。

 

场景三: 项目分支开发完了,合并到主分支上

  假设:主分支名称为 A,子分支为 B

  1.”git checkout A“ 将分支切换到主分支上。

  2.”git merge B“, ok 好像很简单的样子,这会如果遇到冲突了耐着性子fix吧。   

  

 
 
 
posted @ 2019-06-03 17:11  四国诸葛不亮  阅读(219)  评论(0编辑  收藏  举报