- Git学习网站:http://blog.jobbole.com/25808/
- 网络Git服务器如Coding,gitHub,gitLab
密码相关
生成sshkey
在终端中敲下面的命令,第一步会生成一对私钥和公钥,第二步查看公钥字符串。ssh-keygen -t rsa -C "$your_email" (这里要替换成自己的邮箱)cat ~/.ssh/id_rsa.pub
保存sshkey到gitlab
在面板上依次点击Profile Settings –> SSH Keys –> Add SSH Keys。然后把上一步中的id_rsa.pub中的内容拷贝出来粘贴到输入框中,保存。git push的时候每次都要输入用户名和密码的问题解决
原因:在添加远程库的时候使用了https的方式,所以每次都要用https的方式push到远程库
测试:查看使用的传输协议git remote -vorigin https://github.com/toyijiu/DailyBlog.git (fetch)origin https://github.com/toyijiu/DailyBlog.git (push)
对策:重新设置成ssh的方式
git remote rm origingit remote add origin git@github.com:username/repository.git (这里要替换成自己的路径)git push -u origin master
确认:再看下当前的传输协议
git remote -vorigin git@github.com:toyijiu/DailyBlog.git (fetch)origin git@github.com:toyijiu/DailyBlog.git (push)
上传相关
告诉服务器你是谁
git config --global user.email "you@example.com" (这里要替换成自己的邮箱)git config --global user.name "Your Name" (这里要替换成自己的用户名)
上传初始代码
cd project_root (这里要替换成自己的文件夹)git init (初始化git仓库)git add . (添加文件到暂存区)git commit -m 'init commit' (提交代码到仓库)git remote add origin git@example.com:namespace/projectname.git (链接到git server,这里要替换成自己的仓库地址)git push --set-upstream origin master (push代码到服务器)
上传修改代码
git add -A (把所有修改的代码放到暂存区)git add src/XXX (把要提交的代码放到暂存区)git commit -m "说明内容" (上传代码)git push (将本地分支的更新,推送到远程)
Push an existing folder
cd existing_foldergit initgit remote add origin git@gitlab.com:chenys/response-dev.gitgit add .git commit -m "Initial commit"git push -u origin master
Push an existing Git repository
cd existing_git_repogit remote rm origingit remote add origin git@gitlab.jiahenghealth.com:ef_erp/erpman-front.gitgit push -u origin master
- 修改最近一次commit履历
git commit --amend
解决仓库迁移问题
https://blog.csdn.net/qq_39400546/article/details/100150320
下载相关
从现有仓库克隆
git clone git@gitlab.com:chenys/elevator-erp.git (这里要替换成自己的代码仓库地址)
取得最新版本
git pull
取消相关
git checkout xxx (把本地修改后的代码返回回来,xxx是文件名)git checkout [commit的sha值] 回滚到sha值版本// 未使用git add 缓存代码时git checkout . (撤销所有)// 已经使用了git add 缓存了代码。git reset HEAD . (撤销所有)// 已经用git commit 提交了代码git reset [commit的sha值] 回滚到sha值版本,之后的修改会保存到本地
$ git logcommit 35701bd347d8c96505b81daa28512ce489238fb4 (HEAD -> dev, origin/dev)// 35701bd347d8c96505b81daa28512ce489238fb4 就是commit的sha值
分支相关
git brandh (查看当前分支)git branch chenys / git checkout -b chenys (创建代码分支chenys)git branch -d chenys(删除代码分支chenys)git checkout chenys (切换到分支chenys)git merge master (把master上的代码合并到当前分支)git branch -m oldBranchName newBranchName
cherry-pick
把某分支(比如develop分支)的某次提交合并到另一分支(比如master分支),就需要用到git cherry-pick命令。
- 切换到develop分支
- 敲 git log 命令,查找需要合并的commit记录,比如commitID:24263e2c
- 切换到master分支,使用 git cherry-pick 24263e2c 命令,把该条commit记录合并到了master分支,这只是在本地合并到了master分支;
- git push 提交到master远程
查询相关
git status (查看代码的修改状况)git diff (查看已修改的内容)git log (查看各种信息,commit信息,分支信息等)
查询某个文件的修改履历
cd src/XXX (切换到文件所在目录,XXX代表文件所在的文件夹)git log -p XXX (显示该文件的所有修改履历,XXX代表文件名)
别名相关
查看别名
git config --list|grep alias
设置别名
git config --global alias.co checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global alias.st status
Tag相关
git tag 查看所有taggit tag v1.0 打tag(v1.0)git push origin v1.0 把tag推到远端
💥 feat(compiler): add 'comments' option🐛 fix(compiler): fix some bug📝 docs(compiler): add some docs🌷 UI(compiler): better styles🏰 chore(compiler): Made some changes to the scaffolding🌐 locale(compiler): Made a small contribution to internationalization
问题相关
使用下述命令在本地删除远程不存在的分支
git remote prune origin
使用下述命令删除远程文件
git rm -r —cached .setting #—cached不会把本地的.setting删除
git commit -m ‘delete .setting dir’
git push -u origin master
