序言
在git使用过程中发现指令实在太多,就算记忆后不长用的话很快也会忘记掉,所以编写本文的初衷是为了记录在使用git指令的过程中所遇到的需求与解决方法,毕竟使用git的需求也就那么一些,范围不大,所以可以将需求与解决方法记录下来,下次使用时遇到相同需求如果忘记了也可以得到快速解决
需求1
描述:
在git中生产SSH key
扩展:
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key。
步骤:
第1步:创建SSH Key。在windows下查看[c盘->用户->自己的用户名->.ssh]
下是否有id_rsa
、id_rsa.pub
文件,如果没有需要手动生成。
打开git bash,在控制台中输入以下命令。
ssh-keygen -t rsa -C "guimashusheng@126.com"
密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa。同时在密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥,指出密钥的用途或其他有用的信息。所以在这里输入自己的邮箱或者其他都行。输入完毕后程序同时要求输入一个密语字符串(passphrase),空表示没有密语。接着会让输入2次口令(password),空表示没有口令。3次回车即可完成当前步骤,此时[c盘>用户>自己的用户名>.ssh]
目录下已经生成好了。
第2步:登录github。打开setting->SSH keys,点击右上角 New SSH key,把生成好的公钥id_rsa.pub
放进 key输入框中,再为当前的key起一个title来区分每个key。
需求2
描述
将远程仓库上的文件同步到本地
步骤
git clone git@gitlab.com:zhazhanitian/sl-background-sound.git
需求3
描述
将本地文件push到远程仓库上
步骤
进入到需要提交的文件所在目录,然后Git bath here,输入如下指令:
# add后跟空格加一点会将该目录下的所有文件添加至上传列表,若需上传指定文件只需将点改为指定文件的名称带后缀
git add . git commit -m "提交描述"# 如果文件所在的本地仓库和远程仓库从未连接过需要输入下面语句将本地与远程联系上
git remote add origin git@gitlab.com:zhazhanitian/sl-background-sound.git# 将文件提交到主枝上
git push -u origin master
需求4
描述
为版本打tag
步骤
进入到项目根目录,然后Git bath here,输入如下指令
# 查看历史tag
git tag# 查看git的相关tag操作
git tag -h# 添加版本tag 其中v1.0.0为tag名称
git tag -a v1.0.0 -m "版本tag描述"# 将本地tag推送到远程上 其中的v1.0.0就是上面的tag名称
git push origin v1.0.0
需求5
描述
在网页上面新建项目后,完成初始化操作
步骤
进入到需要提交的文件所在目录,然后Git bath here,输入如下指令:
# 下载文件到本地
git clone git@gitlab.com:zhazhanitian/fileStorage.git# 进入文件目录
cd fileStorage# 新建README文件
touch README.md# 添加README文件到提交列表
git add README.md# 提交说明
git commit -m "add README"# 提交文件到主枝
git push -u origin master
需求6
描述
本地已有相关文件夹,在网页上面新建项目后,将本地文件推送到服务器
步骤
进入到需要提交的文件所在目录,然后Git bath here,输入如下指令:
# 进入已有的本地文件目录
cd existing_folder# 初始化git到本目录
git init# 本地与远程取得联系
git remote add origin git@gitlab.com:zhazhanitian/fileStorage.git# 添加文件的推送列表
git add .# 提交说明
git commit -m "Initial commit"# 推送到主枝
git push -u origin master
需求7
描述
预览打包项目(gh-pages)
步骤
进入到需要提交的文件所在目录,然后Git bath here,输入如下指令:
# 进入项目目录 Emoji-ChatRoom,注意这里的项目名称得和远程相同,不同的话反正我是没有上传成功过
cd Emoji-ChatRoom# 初始化git到本目录
git init# 取消dist文件过滤,.gitignore文件中删除dist(重要步骤)# 本地与远程取得联系
git remote add origin https://github.com/zhazhanitian/Emoji-ChatRoom.git# 添加文件的推送列表
git add -A# 提交说明
git commit -m "init file"# 推送到主枝
git push -u origin master# 把 dist 目录推送到 gh-pages 分支
git subtree push --prefix dist origin gh-pages# 然后通过 https://zhazhanitian.github.io/Emoji-ChatRoom 就可以访问了
需求8
描述
查看本地分支、查看远程分支、新建本地分支、推送本地分支到远程、切换分支、删除本地分支、删除远程分支
步骤
进入到项目根目录,然后Git bath here,输入如下指令
# 查看本地分支
git branch# 查看所有分支,包括远程,remotes为远程分支
git branch -a# 新建本地分支
git branch newbranch# 新建本地分支并切换
git checkout -b newbranch# 推送本地分支到远程
git push origin newbranch# 切换分支
git checkout master# 删除本地分支 (要切换出要删除的分支才可以删除)
git branch -d newbranch# 删除远程分支 方式1
git push origin --delete newbranch# 删除远程分支 方式2
git push origin :newbranch
需求9
描述
fetch更新本地仓库(更新远程代码到本地)
步骤
进入到需要提交的文件所在目录,然后Git bath here,输入如下指令:
# 方法一# 从远程的 origin 仓库的 master 分支下载代码到本地的 origin master
git fetch origin master # 比较本地的仓库和远程参考的区别
git log -p master.. origin/master# 把远程下载下来的代码合并到本地仓库,远程的和本地的合并
git merge origin/master# 方法二# 从远程的 origin 仓库的 master 分支下载到本地并新建一个分支 temp
git fetch origin master:temp # 比较 master 分支和 temp 分支的不同
git diff temp # 合并 temp 分支到 master 分支
git merge temp# 删除 temp
git branch -d temp
问题1
描述
The file will have its original line endings in your working directory.
原因
原因不一,大体是因为使用拷贝的方式迁移文件或者从别人的仓库下载文件后想要上传到自己的仓库而出现的问题
步骤
出现上述bug后,接着输入如下指令:
# 删除缓存
git rm -r --cached .# 解决系统不同的冲
git config core.autocrlf false# 接着重新执行上传操作
git add ....
补充
知识1
# git add上传本地项目所有变化的命令三种有git add -Agit add -ugit add .git add -A 提交所有变化git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件