ssh
- debug1: Trying private key: /home/hgneer/.ssh/id_dsa
- debug1: Trying private key: /home/hgneer/.ssh/id_ecdsa
- debug1: Trying private key: /home/hgneer/.ssh/id_ed25519
- 重新创建ssh秘钥文件时一定注意公钥一般会发生变化,
此时记得给Github添加公钥,避免不必要的麻烦。 - DSA用在Github的SSH不行。
git clone/git init
- 如果用Github托管的话,一般先去Github建立Repository然后在自己主机clone会方便些;
用git init的话在git remote添加远程主机地址时就要去创建Github的Repository来充当地址。 虽然Git本身支持多种协议的远程主机地址,且通常使用git协议的地址速度最快,
但是Github代码托管平台却只提供https和ssh协议的地址。
git remote
- 可以修改.git中的config文件来改变远程主机地址,
但是注意Github上只有Public的Repository才能使用git协议的地址作为Git的远程主机地址。 - 自己添加远程主机的名字最好不要写成origin。
- 注意从远程主机clone下来后默认远程主机名是origin,可以用git clone -o <想要的主机名> 主机地址。
git fetch
- git fetch <远程主机名> <远程分支名>
- fetch得到的分支在Repository,
之后通过checkout创建一个本地分支或者merge得到的分支或者rebase得到的分支 - git merge是合并分支到当前分支,不管是本地分支还是远程分支
- git rebase暂时不要用,留到后面理解,rebase是一种合并方式?
git pull
- 取回远程分支的更新再与本地某分支合并
- git pull <远程主机名> <远程分支名> : <本地分支名>
- 相当于git fetch + git merge
- -p可以使得在本地删除远程已删除的分支
- git pull <远程主机名>表示与本分支的追踪分支进行更新及合并
git push
- 把本地的更新推送到远程并合并
- git push <远程主机名> <本地分支名> : <远程分支名> (<来源地> : <目的地>)
- 省掉远程分支名则表示与追踪分支保持一致来推送
- 省掉本地分支名则表示推送一个空分支到远程分支,效果是删除远程分支
- 当本地分支与多个远程主机存在追踪关系可以用-u来选择默认远程主机
- 推送程度:simple(当前分支)、matching(所有对应远程分支的本地分支)、all(所有分支)
- 如果远程分支比本地分支新,git push 之前一般需要 git pull
- git push不会推送tags,除非加上–tags
- before git push,git fetch first and then git merge,or JUST git pull –rebase.
git tag
- 标签命名与commit注释有关?
git log
- git log –name-status
- git log –author=hgneer
- git log –pretty=oneline
- git log –graph –oneline –decorate –all
git branch
- git branch <分支名>是新建一个分支但不改变当前分支,
git checkout -b <分支名>是新建一个分支并切换到该分支 - git checkout - 切换到上一分支
- git branch –set-upstream-to=<远程分支名>是为当前分支建立追踪分支
git commit
- git commit -v提交时显示所有diff信息在最下方
- git commit –amend 可以修改制定commit对应的注释
撤销
- git log 找到你想撤销的commit_id哈希值
- git reset commit_id哈希值 完成Commit命令的撤销,但是不对代码修改进行撤销,
- git reset –keep commit_id哈希值 重置当前HEAD为指定commit,但保持暂存区和工作区不变
- git reset –hard commit_id哈希值 完成撤销,同时将代码恢复到前一commit_id 对应的版本。