Git与Github常见问题与解决方案

本文介绍了在Github中使用git常见的问题和解决方法,包括SSH配置,回滚,冲突解决等等内容。

安装与配置

  1. 安装git 下载地址:https://git-scm.com/downloads
  2. 配置SSH KEY
    ssh-keygen -t rsa -b 4096 -C "username@mail.com"
    遇到提示不断回车就行
  3. 找到生成的key
    cd ~/.ssh
  4. 找到id_rsa.pub 这是你的RSA公钥,复制,然后打开网站:https://github.com/settings/ssh
  5. 选择newsshkey ,把你的公钥粘贴进去。
  6. 设置全局变量
    git config --global user.name "username"
    git config --global user.email username@mail.com
  7. 开始克隆github的项目,进入你项目的比如说:https://github.com/358463121/data.table-cheat-sheet ,找到clone ,点它,它会给你个地址,然后记住那个地址。https://github.com/358463121/data.table-cheat-sheet.git
  8. 将该项目克隆到本地
    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/。商业使用请联系作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值