盒子
目录
文章目录
  1. 在这里记录下学习git遇到的问题 以及常用的命令
  2. 1. 遇到的问题
    1. Q1 如何克隆一个github上自己建立的私有仓库到本地
    2. Q2 如何强制把远程仓库覆盖到本地仓库
    3. Q3 github Contributions Calendar不记录
    4. Q4 初始化本地仓库后添加到远程仓库,远程仓库地址写错了
    5. Q5 git 添加多个ssh key
    6. Q6 如何将 blog 同时托管到 gitcafe 和 github 上?
    7. Q7 为什么配置了 SSH,每次 push 还是需要输入用户名和密码呢?
    8. Q8 恢复仓库到上一次的提交状态:$ git reset --hard
    9. Q9 修改最后的提交日志:$ git commit --amend
  3. 2. 学习git 参考资料

学习git拾遗

在这里记录下学习git遇到的问题 以及常用的命令

1. 遇到的问题

Q1 如何克隆一个github上自己建立的私有仓库到本地

命令行输入:

1
git clone https://github.com/username/repo

之会出现: Cloning into "yourrepo"... 之后会提示输入你的Username 和PassWord 输入正确之后就会把私有仓库复制到本地 注意这里输入的是

1
https://github.com/username/repo

不是

1
git clone git@github.com:username/repo.git

也不是

1
git clone git://github.com/myusername/reponame.git

Q2 如何强制把远程仓库覆盖到本地仓库

1
2
git fetch --all
git reset --hard origin/master

Q3 github Contributions Calendar不记录

查看本地git邮箱:

1
git config user.email

然后在github里的accout settings > email里看看你的primary github email 是不是你本地那个邮箱。更改为一样的邮箱:

1
git config --global user.email "xx@oo.com"

Q4 初始化本地仓库后添加到远程仓库,远程仓库地址写错了

添加到远程仓库

1
git add remote [name/origin] [https://github.com/your-name/your-repo]`

修改远程仓库:

1
git remote set-url --push [name/origin] [https://github.com/your-name/your-new-repo]

Q5 git 添加多个ssh key

问题描述:我的博客托管在gitcafe 和 github 上,每次 push 都要多次输入用户名密码 灰常麻烦,那么如何添加多个 ssh key 呢。一直没有弄好,在 Cassiegithub/gitlab 同时管理多个 ssh key启发下,经过 N 多试错,终于大功告成。下面记录下配置配置过程。请注意:我的环境是 windows7 MINGW32 shell

1.首先生成一个 SSH keys 供 github 使用:

1
2
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "your_email@example.com"

执行会让你重命名 key 咱们将其命名为 id_rsa_github
之后会让你输入密码,再次输入密码确认,ok,完成上述步骤就生成了公钥和私钥了。
截图如下:

2.再根据上述步骤生成另一个 SSH keys(根据你自己在两个远程仓库的邮箱命输入邮箱地址),我们将其命名为 id_rsa_gitcafe

3.接着 咱们添加生成的私钥,再这之前执行

1
2
$ ssh-agent -s
$ ssh-add ~/.ssh/id_rsa_github

这时候会出现错误”Could not open a connection to your authentication agent”,参考Could not open a connection to your authentication agent

我们执行:

1
$ eval `ssh-agent -s`

继续添加 key:

1
2
$ ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitcafe

4.Ok,私钥添加上了,咱们把公钥放到 github/gitcafe。打开你的 github 账号,找到设置,找到 SSH keys 点击 ADD SSH key。随便取个 Title,什么你不知道如何添加公钥?!

在你的.ssh 目录下 用 Notepad 或 sublime 打开 id_rsa_github.pub,然后复制粘贴保存。

gitcafe 添加 ssh 公钥同理。

5.胜利尽在眼前,我们 try try 下。

1
$ ssh -T git@github.com

然后出现了奇怪的东东,布拉布拉,yes/no,不管它 输入yes。接着会看见您的大名,OK,连接成功,gitcafe 同理请将 $ ssh -T git@gitcafe.com。 来上图,感受下:

Q6 如何将 blog 同时托管到 gitcafe 和 github 上?

这个网上教程很多,待我有时间了,我再手把手教同学们,晒下配置文件,感受下:

1
2
3
4
5
6
7
8
9
10
11
[remote "github"]
url = https://github.com/yourname/yourname
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = gitcafe
merge = refs/heads/gitcafe-pages
[remote "gitcafe"]
url = https://gitcafe.com/yourname/yourname
fetch = +refs/heads/*:refs/remotes/orig/*
[alias]
publish=!sh -c \"git push github master && git push gitcafe master:gitcafe-pages\"

Q7 为什么配置了 SSH,每次 push 还是需要输入用户名和密码呢?

参考这里http://segmentfault.com/q/1010000000599327

因为你用的是 https 而不是 ssh。
可以更新一下 origin:

1
2
git remote remove origin
git remote add origin git@github.com:Username/Your_Repo_Name.git

注意:如果你的仓库没有add ssh 只是在.ssh上添加了,在你的仓库里还要添加一次这样才会生效。添加步骤同上。可能要等一分钟左右才会生效。

之后你还需要重新设置track branch,比如:

1
2
git pull
git branch --set-upstream-to=origin/master master

对于HTTPS方式,你可以在~/.netrc文件里设定用户名密码,不过这样的风险在于密码是明文存放在这个文件里的,比较容易泄露

1
2
3
machine github.com
login Username
password Password

Q8 恢复仓库到上一次的提交状态:$ git reset --hard

Q9 修改最后的提交日志:$ git commit --amend

2. 学习git 参考资料