最新消息:重新回归WordPress,我要比较认真的开始更新我的博客了。

linux下GIT使用小结

服务器相关 hanlei 1187浏览

今天重新配置了一下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使用小结