生成SSH-Key
旧版git,找到 Git/bin/ssh-keygen.exe,命令行执行:ssh-keygen.exe -t rsa -C ***@***.com。交互提示直接都按回车,若失败,提示输入文件名称时输入id_rsa再回车。
最终需要在系统用户文件夹下的.ssh文件夹中要有 id_rsa和id_rsa.pub两个文件,用编辑器打开id_rsa.pub取得SSH-Key。
新版git,GitBash已经集成了ssh-keygen.exe,直接在GitBash界面敲 ssh-keygen.exe -t rsa -C ***@***.com 即可。
Git命令行备忘(GitBash)
创建本地分支
git branch branchName ———— 创建本地分支
git branch -b branchName ———— 创建并切换到本地分支
查看本地分支
git branch
查看远端分支
git branch -a
把远端分支拉到本地
git checkout -b localNewBranchName remotes/origin/branchName
切换分支
git checkout branchName
提交代码
commit -m "提交说明"
常用push命令
git push push所有分支
git push origin master 将本地主分支推到远程主分支
git push –u origin master 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)
git push origin <local_branch> 创建远程分支,origin是远程仓库名。
git push origin <local_branch>:<remote_branch> 创建远程分支查看提交记录
git log 查看提交记录
git log -p 文件名 查看文件提交的详细diff
git log -p -2 查看最近两次详细修改的内容diff
比较两个分支的差异
git diff branch1..branch2
分支Merge
git merge remtes/origin/branch1 将远端branch1分支merge到本地当前分支。
解决merge冲突
配置mergetool
git config–global merge.tool bc3
gitconfig –global mergetool.bc3.path 软件执行文件地址当有merge冲突时,用git mergetool查看,处理完冲突后,commit冲突解决,再push。
Git代码仓库迁移
step1:从原库中下下仓库:
git clone --bare *****.git
step2:推到新仓库:
git remote remove origin
git remote add origin *******new.git
git push --all --progress origin
关于reset、rebase、revert
reset是指将当前HEAD的内容重置,不会留任何痕迹。
git reset是撤销某次提交,此次提交之后的提交都会被退回到暂存区。
例:git reset --hard HEAD~3 会将最新的3次提交全部重置,就像没有提交过一样。
git revert是撤销某次操作,此次操作之前的commit都会被保留
revert是撤销某次提交,但是这次撤销也会被作为一次提交进行保存。
rebase可以改变commit的顺序
清除以前上传的大文件记录
https://rtyley.github.io/bfg-repo-cleaner/ 工具地址
git clone 仓库的方式:
1、 git clone 仓库地址
2、 (删除文件大小范围)java-jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
(删除文件)bfg--delete-files *.jar my-repo.git
(删除目录)bfg--delete-folders .git --no-blob-protection my-repo.git
3、cd some-big-repo.git
4、git reflog expire--expire=now --all && git gc --prune=now --aggressive
5、git push
最后一步push肯定不会成功,可行的方法:
1、git push originmaster:temp ,将代码推到远端服务器作为新分支。
2、远端服务器将temp作为默认分支,并删除master分支。
3、git pushorigin --all –force ,将本地代码推到远端作为master分支。
4、在远端服务器将master设置为默认分支。
git clone –bare 仓库的方式:
前面步骤都一样,就是最后一步push的步骤不同。
此种方式要新建一个project,将代码通过仓库迁移的方式push上去。并把这个project的名字改成和原来的project名字一样。