本文介绍了在Github中使用git常见的问题和解决方法,包括SSH配置,回滚,冲突解决等等内容。
安装与配置
- 安装git 下载地址:https://git-scm.com/downloads
- 配置SSH KEY
ssh-keygen -t rsa -b 4096 -C "username@mail.com"
遇到提示不断回车就行 - 找到生成的key
cd ~/.ssh
- 找到
id_rsa.pub
这是你的RSA公钥,复制,然后打开网站:https://github.com/settings/ssh - 选择
newsshkey
,把你的公钥粘贴进去。 - 设置全局变量
git config --global user.name "username"
git config --global user.email username@mail.com
- 开始克隆github的项目,进入你项目的比如说:https://github.com/358463121/data.table-cheat-sheet ,找到clone ,点它,它会给你个地址,然后记住那个地址。https://github.com/358463121/data.table-cheat-sheet.git
- 将该项目克隆到本地
git clone https://github.com/358463121/data.table-cheat-sheet.git
或者你没有远程的目录也可以在本地弄一个,新建一个目录,然后进去,git init
就可以了。
最常用命令
git pull
可以从远程仓库更新代码到本地
git add <filename>
新增一个文件到git仓库中,用这个命令,添加文件改动,
git commit -a
可以提交你所做的修改,并写评论。
git push -u origin master
可以将你commit的代码推送到master分支
分支新建切换合并
git checkout -b mybranch
新建并切换到mybranch分支
git checkout master
切换分支到master
git branch -d mybranch
删除mybranch分支
比如,如果要将开发中的分支(develop),合并到稳定分支(master),
首先切换的master分支:git checkout master。
然后执行合并操作:git merge develop。
当你fork了别人的仓库时,想要保持更新要做如下操作
git remote add upstream https://github.com/xxxxx/xxxxx.git
git fetch upstream
git merge upstream/master
如何进行回滚或删除commit
git log
查看提交的历史commit以及他的ID
git revert <commit log string>
是撤消该commit,作为一个新的commit。
git revert
是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留(这个方法是一般的做法,并不会删除任何commit,而是以一个新的commit形式去做回滚操作)
git reset
是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区(使用reset前请三思,因为他会将你所有的文件与记录都删掉的)
当你做了某个commit,但是又不想要了,想要删除,可以使用以下方法删除:
git rebase -i HEAD~10
这里的10意味着rebase最近的10条记录,输入这条命令后,会让你选择删除哪条commit,保留哪条commit,非常好用。这方法参考了stackoverflow
当然,如果你不介意丢失文件操作的话,可以使用git reset --hard <sha1-commit-id>
这会删除掉你所有的数据,强制回滚到commit的那个状态,非常麻烦后果很严重,不建议使用。
git reset --soft <sha1-commit-id>
还有一个soft模式,这个我没用过,可能没有hard的后果严重。
解决文件冲突
如果你遇到这样的错误:
Please commit your changes or stash them before you merge.
就证明你有文件冲突了
有两种解决方法:
1. git stash
,注意!这个方法会将你的所有操作全部删除,回滚到没冲突的状态。然后使用git pull
就可以解决冲突了。
2. git mergetool
这个命令,你要做的就是编辑主窗口的那个文件,解决掉冲突,最后用git commit -m “merge”来提交你的操作,就可以恢复正常,推荐使用这个方法。
另外还有一些基础的教程:
作为分享主义者(sharism),本人所有互联网发布的图文均遵从CC版权,转载请保留作者信息并注明作者a358463121专栏:http://blog.csdn.net/a358463121,如果涉及源代码请注明GitHub地址:https://github.com/358463121/。商业使用请联系作者。