我是靠谱客的博主 微笑星月,这篇文章主要介绍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压缩


一、常用配置

复制代码
1
2
3
4
5
6
7
8
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窗口的问题

二、常用命令

复制代码
1
2
3
4
5
6
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 #允许可以在没有任何更改的情况下做代码提交

分支管理

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
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

复制代码
1
2
3
git clone -b master git地址 git merge origin/dev

Tag管理

复制代码
1
2
3
4
5
6
7
8
9
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分支

文件管理

复制代码
1
2
git rm 文件名 删除本地分支文件

三、小技巧

查看工程是否有新的提交

复制代码
1
2
git pull | grep -v '[new branch]' | grep -w '^Already up-to-date.$'

四、问题汇总

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

复制代码
1
2
3
4
5
git checkout dev #切换到dev分支 git branch #查看当前所在分支 git pull origin dev #将远程dev分支pull到当前分支 git push origin dev #将当前分支push到远程分支dev

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

在这里插入图片描述

复制代码
1
2
3
4
git fetch origin dev #更新远程仓库信息到本地 git reset --hard origin/dev #强制覆盖本地信息 git pull

git pull报错fatal: refusing to merge unrelated histories

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

git pull时提示有冲突

复制代码
1
2
3
4
git stash #暂存本地更新的代码 git pull git stash apply #恢复暂存的内容

五、实战

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

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

复制代码
1
2
3
4
5
6
7
8
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

复制代码
1
2
3
4
5
6
7
8
#参数 --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仓库,但治标不治本

复制代码
1
2
git gc --prune=now

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

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

复制代码
1
2
git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10

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

复制代码
1
2
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

复制代码
1
2
3
4
5
6
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、把本地的记录,强制更新到远程仓库

复制代码
1
2
git push --force

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

最后

以上就是微笑星月最近收集整理的关于git常用命令和常见问题一、常用配置二、常用命令三、小技巧四、问题汇总五、实战的全部内容,更多相关git常用命令和常见问题一、常用配置二、常用命令三、小技巧四、问题汇总五、实战内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部