我是靠谱客的博主 微笑星月,最近开发中收集的这篇文章主要介绍git常用命令和常见问题一、常用配置二、常用命令三、小技巧四、问题汇总五、实战,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、常用配置
  • 二、常用命令
    • `分支管理`
      • 合并dev分支到master
    • `Tag管理`
    • `文件管理`
  • 三、小技巧
    • `查看工程是否有新的提交`
  • 四、问题汇总
    • `git clone远程仓库到本地,切换到分支dev,发现没有内容`
    • `本地代码有更新,git pull时报错`
    • `git pull报错fatal: refusing to merge unrelated histories`
    • `git pull时提示有冲突`
  • 五、实战
    • `将远程仓库A的dev分支增量同步到仓库B的dev分支`
    • `git清空历史commit`
    • `解决.git目录较大的问题[实测无效,记录下过程]`
      • 方法一:压缩git仓库,但治标不治本
      • 方法二:删除git提交记录中大文件,再通过gc压缩


一、常用配置

git config --global user.name "root"
git config --global user.email "root@163.com"
git config --global user.name 用户名
git config --global user.password 密码
git config --global credential.helper store			#保存待会输入的用户名和密码,避免每次都要输入
git config --global http.sslVerify false	#跳过SSL验证
git credential-manager uninstall			#解决Windows提交代码弹出登录github窗口的问题

二、常用命令

git clone --depth=1		#只克隆最近一次commit记录,提高克隆速度,但使用git branch -a只能看到当前分支名
git add -A  			#提交所有变化
git add -u  			#提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add .  				#提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git commit -m "提交" --allow-empty	#允许可以在没有任何更改的情况下做代码提交

分支管理

git branch -a								#查看本地和远程仓库的所有分支
git clone -b <指定分支名> <远程仓库地址>		#直接克隆远程分支到本地
git checkout -b dev							#创建分支并把当前内容检出到新分支,切换到新分支
git checkout master							#切换到master分支
git push origin --delete dev				#删除远程仓库的dev分支
git branch -d dev							#删除本地的dev分支
git reset --hard origin/dev					#不要本地当前改动,重置到dev分支的最新版本

git log		#查看commit日志
git reset --hard HEAD^		#取消最近的一次commit和add,还原到上一版本
git reset --hard 指定要还原到某版本的commit ID号	#还原到指定版本
git push -f					#远程gitlab仓库回滚

合并dev分支到master

git clone -b master git地址
git merge origin/dev

Tag管理

git tag -l						#列出本地所有tag
git show-ref --tag				#查看远程tag
git tag t1 -d					#删除本地为t1的tag
git push origin :refs/tags/t1	#删除远程tag
git tag t1						#创建名字为t1的tag
git push origin t1  			#把tag为t1的代码推送到远程仓库
git push origin --tags			#推送所有tag到远程仓库
git checkout -b US  t1			#检出tag为t1的代码到本地的US分支

文件管理

git rm 文件名		删除本地分支文件

三、小技巧

查看工程是否有新的提交

git pull | grep -v '[new branch]' | grep -w '^Already up-to-date.$'

四、问题汇总

git clone远程仓库到本地,切换到分支dev,发现没有内容

git checkout dev			#切换到dev分支
git branch					#查看当前所在分支
git pull origin dev			#将远程dev分支pull到当前分支
git push origin dev			#将当前分支push到远程分支dev

本地代码有更新,git pull时报错

在这里插入图片描述

git fetch origin dev				#更新远程仓库信息到本地
git reset --hard origin/dev			#强制覆盖本地信息
git pull

git pull报错fatal: refusing to merge unrelated histories

git pull --allow-unrelated-histories	#允许不相关历史提交,强制合并

git pull时提示有冲突

git stash		#暂存本地更新的代码
git pull
git stash apply		#恢复暂存的内容

五、实战

将远程仓库A的dev分支增量同步到仓库B的dev分支

该方法不仅可以同步代码还可以同步commit记录
不会删除B有而A没有的数据
A删除一个文件,B也会删除同样的文件

git clone -b dev 仓库B地址
cd B
git remote add main 仓库A地址	#添加仓库A为仓库B的远程仓库,并设置名字为main
git remote -v					#可以看到多了两个main的远程仓库
git remote show main			#查看远程仓库main的详细信息
git pull --no-edit main dev --allow-unrelated-histories		#增量合并远程仓库main的dev分支到B仓库的当前分支(也就是dev分支)
git push	#提交仓库B的最新代码

git清空历史commit

#参数 --orphan 作用有两个,一个是拷贝当前所在分支的所有文件,另一个是没有父结点,可以理解为没有历史记录,是一个完全独立背景干净的分支。
git checkout --orphan nb	#创建一个独立新分支nb
git add -A
git commit -m "first commit"
git branch -D dev	#删除dev分支。-D 等同于 --delete --force 强制删除分支
git branch -m dev	#将当前分支nb重命名为dev
git push -f origin dev	#强制push到远程dev仓库

解决.git目录较大的问题[实测无效,记录下过程]

参考文章:git删除commit的历史大文件记录

方法一:压缩git仓库,但治标不治本

git gc --prune=now

方法二:删除git提交记录中大文件,再通过gc压缩

1、查找最大的10个文件,降序排列

git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10

在这里插入图片描述
2、以删除ansible/fastdfs.tar为例

git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch ansible/fastdfs.tar' --prune-empty --tag-name-filter cat -- --all

3、重构pack与gc

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git fsck --full --unreachable
git repack -A -d
git gc --aggressive --prune=now

执行以上命令,就会发现.git目录变小了

4、把本地的记录,强制更新到远程仓库

git push --force

注意的地方,如果有基于当前分支拉取新分支的情况,要checkout到相应分支,执行git push origin {分支} --force

最后

以上就是微笑星月为你收集整理的git常用命令和常见问题一、常用配置二、常用命令三、小技巧四、问题汇总五、实战的全部内容,希望文章能够帮你解决git常用命令和常见问题一、常用配置二、常用命令三、小技巧四、问题汇总五、实战所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部