今天重新配置了一下gitee的库,发现自己还是什么也不会,要靠不断的百度解决问题,这估计就是没有经过系统学习的弊端。
今天要做的是本地修改内容后推送到远程gitee库,再由生产坏境拉取下来。为了方便,使用SSH密钥对来验证权限。下面记录一些基础命令和配置中遇到的问题。
简易的命令行入门教程
这是gitee创健新项目时的教程命令,虽然命令不多,但用的最多。
Git 全局设置:
git config --global user.name "ghoot" git config --global user.email "mail@hanlei.org"
创建 git 仓库:
mkdir fugu123 cd fugu123 git init touch README.md git add README.md git commit -m "first commit" git remote add origin git@gitee.com:ghoot/fugu123.git git push -u origin master
已有项目?
cd existing_git_repo git remote add origin git@gitee.com:ghoot/fugu123.git git push -u origin master
设置SSH秘钥对
创建SSH key的方法很简单,执行如下命令就可以:
ssh-keygen
然后根据系统提示输入即可。生成的SSH key默认保存为~/.ssh/id_rsa.pub(公钥)和~/.ssh/id_rsa(私钥)。
需要在码云上设置SSH公钥,设置位置在个人->设置->SSH公钥内。公钥的标题随便写,公钥的内容复制~/.ssh/id_rsa.pub的内容,就可设置完成
linux上如何告诉GIT哪个私钥要使用。我使用的方法是在~/.ssh/config中添加:
host gitee.com HostName gitee.com IdentityFile ~/.ssh/id_rsa_github User git
现在SSH配置完成了,可以通过下面的命令测试
ssh -T git@gitee.com
如果正常的话会提示如下:
Welcome to Gitee.com, username!
如果不是本机生成的密钥可能会出错误:
The authenticity of host 'gitee.com (120.55.226.24)' can't be established. Are you sure you want to continue connecting
这是私钥文件的权限设置问题,需要将私钥文件权限设为600。
chmod 600 .ssh/id_rsa
最后出现的错误
最后在pull时出现了一个莫名其妙的错误:
error: Your local changes to the following files would be overwritten by merge:file.txt Please, commit your changes or stash them before you can merge.
如果希望保留生产服务器上所做的改动,仅仅并入新配置项, 处理方法如下:
git stash git pull git stash pop
然后可以使用git diff -w +文件名 来确认代码自动合并的情况.
反过来,如果希望用代码库中的文件完全覆盖本地工作版本. 方法如下:
git reset --hard git pull
git关于文件权限设置
git把文件权限也算作文件差异的一部分了,但一般我们不需要也不希望这样做。可以加入忽略文件权限的配置,如下:
$ git config core.filemode false
这样就设置了忽略文件权限。查看下配置:
$ cat .git/config
GIT强制PULL覆盖本地文件
git fetch --all git reset --hard origin/master
git fetch将远程库全部更新到本地,但是不对工作区进行更改,git reset –hard将工作区版本回退到最新版本
GIT撤回PULL操作
git log //查看变更记录
git reset --hard id //根据log内ID回滚
git reflog //命令查看你的历史变更记录 git reset --hard HEAD@{n} //(n是你要回退到的引用位置)回退
测试好的代码,pull到生产生服器,出现莫名错误。手忙脚乱。后来发现是服务器缓存和更新有冲突,清空缓存就好了。
GIT分支的使用
终于在GIT的路上又要前进一步了,今天要学习简单的使用分支
git branch //查看分支 git branch <name> //创建分支 git checkout <name> //切换分支 git checkout -b <name> //创建+切换分支 git merge <name> //合并某分支到当前分支 git branch -d <name> //删除分支
GIT忽略文件、文件夹
在GIT项目目录新建文件.gitignore,然后把要忽略的文件或文件夹写进去就OK了。
GIT文件常用操作
添加修改后文件
git add 文件名
git add . //添加全部
添加后文件放弃添加,返回修改状态
git reset HEAD 文件名
放弃修改内容,恢复修改前状态
git checkout -- 文件名
转载请注明:HANLEI'BLOG » linux下GIT使用小结