配置SSH KEY
SSH KEY的配置不是必须的,不配置的话我们就只能使用HTTPS协议,这样每次提交时要输入用户名密码,略麻烦,所以还是配置一下。配置SSH KEY的原理很简单,采用非对称加密方式生成公钥和私钥,公钥告诉GitHub,私钥留在自己电脑上(私钥不可泄露),当我们向GitHub上提交数据时,GitHub会用我们留给它的公钥加密一段消息返回给我们的电脑,如果我们能够用私钥解密成功,说明是合法的用户,这样就避免我们输入用户名密码了。
1.查看本地是否已有SSHKEY
当前用户目录下执行:ls -la 查看是否有.ssh文件夹,如果有即已生成过。
2.生成SSH指纹
生成SSH指纹: ssh-keygen -t rsa -b 4096 -C "你的github用户名"
生成的公钥文件路径:~/.ssh/id_rsa.pub
4.将公钥告诉GitHub
登录GitHub,点击右上角的向下的箭头,选择Settings,在新打开的页面中左边侧栏选择SSH and GPG keys,如下:
如何关联本地仓库和远程仓库?
1、本地创建文件夹(如temp);
2、进入temp文件夹下,cd temp;执行git init操作;
3、将本地仓库和远程仓库关联;git remote add origin git@github.com:'你的github用户名'/''要关联的仓库名'.git';
4、拉取远程仓库代码到本地;git pull origin master;
5、本地文件推送到远程仓库;1)、git add 1.txt ;2)、git commit -m "merge:my first commit!"3)、git push -u origin master
patch生成
生成某次commit的patch:git format-patch -1 commit_id 或者 git format-patch commit_id1...commit_id2
打patch
先检查patch文件:git apply --stat newpatch.patch
检查能否应用成功:git apply --check newpatch.patch
打补丁:git am --signoff < newpatch.patch
(使用-s或--signoff选项,可以commit信息中加入Signed-off-by信息)
恢复误删除的文件或文件夹:
git reset HEAD file(文件名或文件夹)
git chekout file(文件名或文件夹)
查看本地修改状态:
git status
不查看untracked file:
git status -uno
只查看modified的文件:
git status | grep "modi"
rebase命令:
以branch1分支作为基线合入当前分支多于branch1分支的内容到当前分支;
git rebase develop/branch1
合并commit:
git rebase -i HEAD~2
合并最后两次commit,以倒数第二次commit为起点rebase最后一次commit;
对于 commit 合并可以使用 squash、fixup 指令,区别是 squash 会将该 commit 的注释添加到上一个 commit 注释中,fixup 是放弃当前 commit 的注释;drop丢弃某次commit;
执行过程有冲突,解决冲突以后执行git rebase --continue继续,执行git rebase --abort停止合并;
最后执行git push -f 推送到远端分支;
修改commit信息:
修改最后一次commit日志信息:
git commit --amend -m
"c3"
要修改更久远的commit信息:
1)git rebase -i commitid (修改commitid之后的提交的commit信息)
2)在弹出的vim中修改要修改commit信息的commit钱将pick改为reword后保存退出;
3)在弹出的vim中修改要改为的commit信息后保存退出;
4)git push;
撤销commit:
git reset --soft HEAD~1(撤销最后一次commit)
git reset --soft HEAD~2(撤销最后两次commit)
还原git add : git restore --staged file
查看提交修改的文件列表:
git diff --name-only 76f4ccc65619f0cda40d7b2fa9f4bcf1cdf3934a e13374a780bbe40fb96e5a7d6ef3fd100c97984b
commitid1之后到commit2的改动的文件列表(不包含commitid1)
查看指定文件的log
git log filename
可以看到fileName相关的commit记录
git log -p filename
可以显示每次提交的diff
只看某次提交中的某个文件变化,可以直接加上fileName
git show commit-id filename
基于本地分支创建新的分支并推送关联远端:
1、创建分支
git branch personal/local/xxx
或git checkout -b personal/local/xxx
2、推送到远端
git push origin personal/local/xxx
2、关联远端分支
查看与远端分支的关联关系:
git branch -vv
git branch --set-upstream-to=origin/personal/local/xxx personal/local/xxx
丢弃本地新增的文件:
git clean -df
git diff或git log乱码问题解决:
$ git config --global core.quotepath false # 显示 status 编码
$ git config --global gui.encoding utf-8 # 图形界面编码
$ git config --global i18n.commit.encoding utf-8 # 提交信息编码
$ git config --global i18n.logoutputencoding utf-8 # 输出 log 编码
$ git config --global --list #
查看当前用户(global)配置
$ export LESSCHARSET=utf-8(linux) set LESSCHARSET=utf-8(win)
最后一条命令是因为 git log 默认使用 less 分页,所以需要 bash 对 less 命令进行 utf-8 编码
windows下git bash反应慢问题解决:
$ git config --global core.preloadindex true
$ git config --global core.fscache true
$ git config --global gc.auto 256
$ export PS1='$'