Git使用技巧
Posted 旧年不在cd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git使用技巧相关的知识,希望对你有一定的参考价值。
Git使用技巧
1、使用如下命令生成SSH密钥
#-C注释为了区分秘钥,也可以不写
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
# Generating public/private rsa key pair...
# 三次回车即可生成 ssh key
2、添加公钥到远程
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
#将id_rsa.pub文件的内容添加到远程即可
3、git clone 指定分支
git clone -b dev_jk http://10.1.1.11/service/tmall-service.git
#-b dev-jk:指定分支分支
#http://10.1.1.11/service/tmall-service.git:仓库地址
4、文件复制导致文件属性改变,提交时会全部提交
解决方法:git默认是检测文件属性改变的,可以通过如下命令设置忽略文件属性的检测
#全局仓库生效
git config --global core.fileMode false
#当前仓库生效
git config core.filemode false
5、git提交时默认会将LF转换成CRLF
解决方法:git默认会进行换行符转换的,可以通过如下命令设置不自动转换
#全局仓库生效
git config --global core.autocrlf false
#当前仓库生效
git config core.autocrlf false
6、git提交时会忽略文件名的大小写
解决方法:git提交时默认会忽略文件名的大小写,所以git status是不会提示你有修改的,可以通过如下命令设置大小写检测
#可以通过 git config --get core.ignorecase 查看默认配置
#全局仓库生效
git config --global core.ignorecase false
#当前仓库生效
git config core.ignorecase false
然后git status就可以看到修改的东西,然后就是进行正常的操作就可以提交了,但是你会发现一个问题,在本地是只有一个你修改过后的文件,但是在线上大小写两个都会存在,而且你必须删除才行(直接git上操作删除即可),然后你会发现你把大写的删除之后,线上小写的文件依旧存在,但是本地的那个文件没有了,这时候就需要本地再重新建一个一样的,再次重新提交即可,其实最好是一开始就把git 的默认配置修改掉(区分大小写的模式),后面的操作其实也可以直接本地先备份再删除提交
7、git指定commit时的编辑器
#全局仓库生效
git config --global core.editor 编辑器路径
#当前仓库生效
git config core.editor 编辑器路径
8、git设置别名
#全局仓库生效
git config --global alias.ll "log --graph --pretty=format:'%C(yellow)%h%Creset -%C(cyan)%d%Creset %s %Cgreen(%an, %cr)' --abbrev-commit"
#当前仓库生效
git config alias.ll "log --graph --pretty=format:'%C(yellow)%h%Creset -%C(cyan)%d%Creset %s %Cgreen(%an, %cr)' --abbrev-commit"
9、.gitconfig文件参考
[user]
email = guchunqi@cvte.com
name = guchunqi
[core]
editor = D:/Mysoftware/QQbroswer/Notepad++/notepad++.exe
autocrlf = false
filemode = false
ignorecase = false
[commit]
template = E:\\\\Mycode\\\\gitcommit_template
[alias]
ll = log --graph --pretty=format:'%C(yellow)%h%Creset -%C(cyan)%d%Creset %s %Cgreen(%an, %cr)' --abbrev-commit
10、commit模板文件gitcommit_template
[]
[what]
[why]
[how]
11、git 修改本地和远程分支名称
git branch -a :查看所有分支
git branch -r :查看远程分支
git branch -vv :查看本地分支所关联的远程分支
git branch -m old_branch new_branch :重命令本地分支
git push origin :old_branch :删除旧分支
git push --set-upstream origin new_branch 或者git push -u origin new_branch:push新的分支
注意:把origin改为自己的名称
12、git撤销commit的几种方法
- 撤销commit一般用git reset ,语法如下
git reset [ --mixed | --soft | --hard] [<commit ID>]
- 撤销git commit,撤销git add,保留编辑器改动代码
git reset --mixed commit-id/git reset commit_id
- 撤销git commit,不撤销git add,保留编辑器改动代码
git reset --soft commit_id
- 撤销git commit,撤销git add,删除编辑器改动代码
git reset --hard commit_id
13、git回滚本地和远程分支
方法一:
git reset --hard commit_id
git push origin branch_name
方法二:
- 新建backup分支 作为备份,以防万一
git branch backup
- 将本地的backup分支 推送到远程的backup
git push origin backup:backup
- 本地仓库彻底回退到xxxxx版本,xxxxx版本之后的commit信息将丢失
git reset --hard xxxxx
- 删除远程的master分支 (注意master前有个:)
git push origin :master
- 重新创建远程master分支(这跟第1次提交本地代码库给远程仓库的命令一样)
git push origin master
14、git stash暂存的操作
多人开发,经常遇到开发某一个分支时,需要处理其他事情,这时就可以暂存手头的工作,进行其他工作,完事后再恢复,继续工作
- 暂存操作
#查看当前状态
git status
#如果有修改,添加修改文件
git add .
#暂存操作
git stash save '本次暂存的标识名字'
- 查看当前暂存的记录
#查看记录
git stash list
- 恢复暂存的工作
pop命令恢复,恢复后,暂存区域会删除当前的记录
#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash pop stash@index
apply命令恢复,恢复后,暂存区域会保留当前的记录
#恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash apply stash@index
- 删除暂存
#删除某个暂存, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash drop stash@index
#删除全部暂存
git stash clear
15、git解决合并冲突
#正常提交代码
git add .
git commit -m "..."
git push(遇到冲突)
git reset --hard HEAD^(回到开发的基础版本)
git pull(拉取远程的更新)
git reflog(查看刚刚要push的那一个提交的commit-id)
git cherry-pick commit-id
一般会自动合并,如果自动合并不了就需要手动解决冲突
git add .
git commit
git push
16、git提交空文件夹
- 在空文件夹下创建*.gitkeep*文件
vim .gitkeep
- 输入以下内容
# Ignore everything in this directory
*
# Except this file !.gitkeep
- 提交
17、git分支重命名
- 本地分支重命名
git branch -m oldName newName
- 将重命名的分支推送到远程
git push origin newName
- 删除远程旧分支
git push --delete origin oldName
18、将本地仓库的某一个分支推送到一个新的远程仓库
-
新建远程仓库
-
进入本地仓库,重命名远程仓库名
git remote rename origin old-origin
- 添加新仓库地址
git remote add origin ssh://xxxxx.git(ssh地址)
- 查看新仓库地址是否添加成功
git remote -v
- 推送本地仓库的dev分支到main分支
git push origin dev:main
- 删除新仓库地址
git remote remove origin
- 修改远程仓库名
git remote rename old-origin origin
19、示例
git config --global user.email "guchunqi@cvte.com"
git config --global user.name "guchunqi"
git config --global core.editor vim
git config --global commit.template ~/gitcommit_template
git config --global core.fileMode false
git config --global core.autocrlf false
git config --global core.ignorecase false
git config --global alias.co "commit"
git config --global alias.ps "push"
git config --global alias.pl "pull"
git config --global alias.ck "checkout"
git config --global alias.ver "rev-parse --short=8 HEAD"
git config --global alias.lg "log --graph --pretty=format:'%C(yellow)%h%Creset -%C(cyan)%d%Creset %s %Cgreen(%an, %cr)' --abbrev-commit"
git config --global alias.br "branch"
git config --global alias.st "status"
git config --global alias.df "diff"
以上是关于Git使用技巧的主要内容,如果未能解决你的问题,请参考以下文章
为啥“git clone”在传递本地 file:/// url 时会打包对象数据库?