文章目录
- 一、常用配置
- 二、常用命令
- `分支管理`
- 合并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
8git 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
6git 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
13git 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
3git clone -b master git地址 git merge origin/dev
Tag管理
复制代码
1
2
3
4
5
6
7
8
9git 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
2git rm 文件名 删除本地分支文件
三、小技巧
查看工程是否有新的提交
复制代码
1
2git pull | grep -v '[new branch]' | grep -w '^Already up-to-date.$'
四、问题汇总
git clone远程仓库到本地,切换到分支dev,发现没有内容
复制代码
1
2
3
4
5git checkout dev #切换到dev分支 git branch #查看当前所在分支 git pull origin dev #将远程dev分支pull到当前分支 git push origin dev #将当前分支push到远程分支dev
本地代码有更新,git pull时报错
复制代码
1
2
3
4git fetch origin dev #更新远程仓库信息到本地 git reset --hard origin/dev #强制覆盖本地信息 git pull
git pull报错fatal: refusing to merge unrelated histories
复制代码
1
2git pull --allow-unrelated-histories #允许不相关历史提交,强制合并
git pull时提示有冲突
复制代码
1
2
3
4git stash #暂存本地更新的代码 git pull git stash apply #恢复暂存的内容
五、实战
将远程仓库A的dev分支增量同步到仓库B的dev分支
该方法不仅可以同步代码还可以同步commit记录
不会删除B有而A没有的数据
A删除一个文件,B也会删除同样的文件
复制代码
1
2
3
4
5
6
7
8git 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
2git gc --prune=now
方法二:删除git提交记录中大文件,再通过gc压缩
1、查找最大的10个文件,降序排列
复制代码
1
2git rev-list --all | xargs -rL1 git ls-tree -r --long | sort -uk3 | sort -rnk4 | head -10
2、以删除ansible/fastdfs.tar
为例
复制代码
1
2git 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
6rm -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
2git push --force
注意的地方,如果有基于当前分支拉取新分支的情况,要checkout到相应分支,执行git push origin {分支} --force
最后
以上就是微笑星月最近收集整理的关于git常用命令和常见问题一、常用配置二、常用命令三、小技巧四、问题汇总五、实战的全部内容,更多相关git常用命令和常见问题一、常用配置二、常用命令三、小技巧四、问题汇总五、实战内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复