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:/仓库绝对路径 //远程下载仓库
上一篇: 基于tkinter的PDF合并小工具