欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

git指令大全(建议收藏)

程序员文章站 2022-06-23 12:07:22
Git版本管理是一个分布式的仓库管理工具,其功能相当的强大,因此我总结了一些学习的命令,忘记的时候可以回来看看。 1.安装和初步配置 sudo apt install git gi...

Git版本管理是一个分布式的仓库管理工具,其功能相当的强大,因此我总结了一些学习的命令,忘记的时候可以回来看看。

1.安装和初步配置

  sudo apt install git git-core               //安装   (其实不用apt-get也可以的)    
  git config --global user.name "Your Name"       //你的名字
  git config --gloabal user.email "email@163.com" //你公司的内部邮箱,或者随便写一个
  git config --gloabal color.ui true //这样就会显示不同的颜色
  git config --gloabal alias.st status //为status配置别名 这样就是可使用git st 代替 git status
  git config --gloabal alias.co checkout  //checkout别名co
  git config --gloabal alias.ci commit //commit 别名ci
  git config --gloabal alias.br branch //branch别名br

2.下载服务器源码

  mkdir project-code            //创建一个目录作为你的工作区
  cd project-code               //进入工作目录
  ssh-keygen -t rsa -C "email@163.com"  //创建ssh key,生成的密钥交给版本仓库管理员,用于认证你的工作区,下载,提交代码
  //生成过程如下图所示

  git clone git@serverIP:/source/source.git  //下载源码到本地,其中 git@serverIP:/source/source.git ,这是一个ssh地址,git为用户名@后面为IP地址,和源码位置

这是在一开始存在版本控制仓库的情况下,我们需要加入到源码开发中去的情况,也是大部分存在的情况,如果需要自己建立一个版本库的话如下
  mkdir IamController //如果你是版本控制,只是管理自己的代码,而不共享给别人
  cd IamController
  git init  //创建版本库,就会生成 .git 目录

3.代码提交

 git add ***.txt  //把***.txt由工作区存放到暂存区
  git commit -m "**************" //将暂存区的文件提交到仓库 -m 后面是提交的说明
  git status //查看当前的工作区和暂存区的状态,可以时刻查看仓库的状态
  git diff xxx.txt //对比查看工作区和仓库内xxx.txt的不同,就是查看工作区对本文件的修改,并查看修改内容 
  git diff HEAD -- xxx.txt //查看工作区与版本库里最新的版本的区别,其实和上面的类似

4.版本退回

  git log //查看仓库所有的版本号,版本说明
  git log --pretty=oneline //一行显示版本号和版本末说明
  git log --graph --pretty=oneline --abbrev-commit //显示分支和commit历史提交的序列码
  git log -1  //是数字1 ,显示最近一次的commit提交
  git reset --hard HEAD^ //退回当上一个版本, 两个 ^表示退回两个版本
  git reset --hard num //退回到num 版本号的那个版本
  git reflog //记录每次操作的过程,用于查看操作过的所有版本的ID,用于git reset

5.撤回修改

  git checkout -- xxx.txt //丢弃工作区的修改,就是修改了还没有git add,也就是退回到和git add的一样的状态,-- 不能去掉,去掉就是创建一个新的分支
  git reset HEAD xxx.txt //在commit之前撤回修改,这个命令既可以退回版本,也可把暂存区的修改退回到工作区,然后再使用上面的命令,放弃修改

6.删除文件

  rm xxx.txt //直接删除工作区的文件
  git checkout -- xxx.txt //如果误删了,撤回工作区修改
  git rm xxx.txt //版本库删除文件

7.分支创建

 git checkout -b xxx //创建xxx分支并切换到xxx分支
  git branch xxx //创建xxx分支
  git checkout xxx //切换到xxx分支
  git branch //查看分支,和当前所在分支
  git checkout master //切换到主分支  
  git merge xxx //合并xxx分支到主分支
  git checkout -d xxx // 删除分支xxx
  git checkout -D xxx // 强行删除分支xxx,只有分支融合后,-d的删除才能使用,不然会失败,但是-D是强行删除,在主分支以外的其他分支,删除另一个分支就必须使用-D

8.解决冲突

  当遇到两个分支融合或者融合到主分支遇到冲突时,必须手动融合
  git status //显示冲突文件以及冲突的地方
  然后修改冲突的地方再次提交,提交完后删除分支
  git branch -d xxx  //删除xxx 分支
  git merge --no-ff -m "merge with --no-ff"  XXX  //以 禁用fast forward的方式合并dev 直接就上传了(commit),合并后还可以看到历史分支,而fast forward是看不到历史分支的

9.分支储藏

为每一个bug都创建临时分支,储藏分支,然后恢复分支,就是把工作现场储藏起来,去解决另一个bug,解决完了再回到现场

  git stash //储藏现场,指的是工作区的情况,暂停这个分支的add commit的情况,执行后,现场的工作区就为空了,可以status查看
  git stash list //储藏现场的列表,然后用于恢复,每次储藏都会在这个list内注册
  git stash apply //恢复现场,但这个现场在stash list内依然存在,并没有删除掉
  git stash apply stash@{n} //恢复现场n,就是在这list内可能不止一个现场,n代表现场的序号 
  git stash drop //删除stash list内的这个现场注册
  git stash pop //恢复现场同时删除stash list内的这个注册

10.多人远程协作

在创建好远程的git仓库后,不管是github还是git服务器的仓库,多个开发成员需要协作开发,因此需要从仓库git clone下来

  git remote //查看远程库信息,一般是origin
  git remote -v //显示更详细的信息,origin的抓取和推送地址
  git push origin xxx//推送分支xxx 
  git checkout -b xxx origin/xxx  //创建远程分支
  git pull //更新最新的
  git branch --set-upstream-to=origin/dev dev //设置本地的dev与远程的origin/dev分支的连接,--set-upstream被弃用了,因此只能--set-upstream-to,当连接好了之后才能成功pull到最新的库

11.标签快照

  git tag tagname //在主分支打一个标签版本号tagname 或者写v1.0,再最新的commit上打标签
  git tag  //查看所有标签,所有tag不是按照时间顺序列出来的,而是按字母数字开头大小拍了出来
  git tag tagname  num  //在序列码num上打标签,这个num表示commit的提交序列码。可通过  git log --graph --pretty=oneline --abbrev-commit 获得
  git show tagname  //显示标签信息
  git tag -a tagname -m " version info" num // -a指定在commit 提交码num序列码上打标签为tagname 并-m带有标签说明
  git tag -s tagname -m "带私钥的标签说明" num //签名采用PGP签名,没有gpg密钥对就会报错,需要安装 apt install gnupg
  git tag -d tagname  //删除标签
  git push origin tagname //推送标签到远程
  git push origin --tag //一次性推送所有的tag
 //如果要删除远程的tag,先删除本地的tag,然后远程删除
  git push origin :refs/tags/tagname  //删除远程版本库内的标签

12.搭建git服务器

首先得安装git,然后再linux 下为git创一个用户,淡然可以不用创建也行

sudo adduser git //创建一个linux用户git
  ssh-keygen -t rsa -C "youremail@xxx.com"//创建密钥用于git server认证,这样才能提交代码到远程仓库,在用户目录下会生成.ssh目录,里面的id_rsa私钥和id_rsa.pub公钥就是密钥对,公钥需要给远程服务器或者github
  //手机需要远程上传的的用户的公钥id_rsa.pub,把文件的内容复制,一行一个用户导入服务器/home/git/.ssh/authorized_keys文件里
  //在服务器某个路径下创建仓库并初始化
  sudo mkdir codesever //创建代码仓库,用于代码上传下载
  sudo git init --bare sample.git //初始化建立远程版本库
  git clone git@serverip:/仓库绝对路径   //远程下载仓库