需要熟记的git命令

总结一下github常用的命令,设置部分跳过,假设repository的名字叫hello-world:
 
1.创建一个新的repository:
 
先在github上创建并写好相关名字,描述。
 
$cd ~/hello-world //到hello-world目录
 
$git init //初始化
 
$git add . //把所有文件加入到索引(不想把所有文件加入,可以用gitignore或add 具体文件)
 
$git commit //提交到本地仓库,然后会填写更新日志( -m “更新日志”也可)
 
$git remote add origin [email protected]:WadeLeng/hello-world.git //增加到remote
 
$git push origin master //push到github上
 
2.更新项目(新加了文件):
 
$cd ~/hello-world
 
$git add . //这样可以自动判断新加了哪些文件,或者手动加入文件名字
 
$git commit //提交到本地仓库
 
$git push origin master //不是新创建的,不用再add 到remote上了
 
3.更新项目(没新加文件,只有删除或者修改文件):
 
$cd ~/hello-world
 
$git commit -a //记录删除或修改了哪些文件
 
$git push origin master //提交到github
 
4.忽略一些文件,比如*.o等:
 
$cd ~/hello-world
 
$vim .gitignore //把文件类型加入到.gitignore中,保存
 
然后就可以git add . 能自动过滤这种文件
 
5.clone代码到本地:
 
$git clone [email protected]:WadeLeng/hello-world.git
 
假如本地已经存在了代码,而仓库里有更新,把更改的合并到本地的项目:
 
$git fetch origin //获取远程更新
 
$git merge origin/master //把更新的内容合并到本地分支
 
6.撤销
 
$git reset
 
7.删除
 
$git rm * // 不是用rm
 
//——————————常见错误———————————–
 
1.$ git remote add origin [email protected]:WadeLeng/hello-world.git
 
错误提示:fatal: remote origin already exists.
 
解决办法:$ git remote rm origin
 
然后在执行:$ git remote add origin [email protected]:WadeLeng/hello-world.git 就不会报错误了
 
2. $ git push origin master
 
错误提示:error:failed to push som refs to
 
解决办法:$ git pull origin master //先把远程服务器github上面的文件拉先来,再push 上去。
 

//—————————————


==================================================================

之前开始用github时是在ubuntu下按着官方的新手指南搞定的。但最近一直在用fedora,所以也想在fedora下用github,配置的时候很顺利,就是在git push的每次都需要输入username和password,而我是配置好公钥登陆的。用ssh -T [email protected] 也是成功用公钥登陆的。

查看了下~/.gitconfig,发现和ubuntu下的一样,google看到一篇《GitHub使用简介》,里面说了git push的两种方式,SSH方式和HTTPS方式。

git-sshgit-https在版本库的SSH方式和HTTPS方式是不同的,具体来说就是url信息的不同,但是,实际的认证机制也是不同的。当建立了本机密钥之后,使用ssh方式实际上是不需要再次认证的,而https则每次需要输入密码 。《Help.GitHub - SSH key passphrases》里也说了用SSH更方便更安全,不需要去输入长长的密码。

我去看了下repo目录下的.git/config,果然,我的url是HTTPS形式。

[remote "origin"] 
fetch = + refs/heads/*:refs/remotes/origin/* 
url = https://[email protected]/username/projectname.git

因为远程版本库的url是HTTPS,估计是我git clone的时候用HTTPS链接造成的

所以问题就出在这了,每次都很不方便,都要输入用户名和密码。

为了使用SSH公钥的方式认证,我把config的url改成下面这样

[remote "origin"] 
fetch = + refs/heads/*:refs/remotes/origin/* 
url = [email protected]:username/projectname.git

这样我git push的时候又可以用SSH公钥认证而不用去输入用户名和密码,不仅方便,而且更安全。

有没有觉得,每次git pull 或git push的时候,都需要重新输入密码,很麻烦。搜了下找到一种方法记住ssh连接的密码,同时把Git repository的密码保存下来,下面就来一步一步做吧。。

1. 首先是保存密码输入问题,需要创建密钥,在你的命令行输入:

local:~ yourname$  ssh-keygen -t rsa

然后依次回车,输入密码,这个密码和SSH的帐号密码无关。

Generating public/private rsa key pair.
Enter file in which to save the key (/u/kim/.ssh/id_rsa): 【回车】
Enter passphrase (empty for no passphrase): 【第一次密码】
Enter same passphrase again: 【第二次密码】
Your identification has been saved in /u/kim/.ssh/id_rsa.
Your public key has been saved in /u/kim/.ssh/id_rsa.pub.

2. 接下来把密钥文件内容上传到的SSH帐号下:

local:~ yourname$ cat ~/.ssh/id_rsa.pub  | ssh username@yourhost 'cat >> .ssh/authorized_keys'

3. 最后一步测试

local:~ yourname$ ssh [email protected]

如果此时不需要你输入密码,那么恭喜你设置成功了。现在你再执行git pull 或git push就不需要输入密码了。

参考:Store your git https passwords in your OS X Keychain

ps: 如果更换主机ip地址等,会出现ssh的一个提示,去除这个提示,请使用:

ssh-keygen -f  ~/.ssh/known_hosts -R NewIP

你可能感兴趣的:(需要熟记的git命令)