Git 使用技巧

1、使用如下命令生成SSH密钥
#-C注释为了区分秘钥,也可以不写
ssh-keygen -t rsa -C "[email protected]"
 
# 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 "[email protected]"
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)