在初始使用git事遇到很多问题,在此做一个整理
如有问题,及时联系作者修改,防止误导他人。蟹蟹!!!
常用指令
1.sudo apt-get install git #:安装git
2.git init #:把文件夹变成仓库
3.git add filename #把文件夹到暂存
4.git commit -m "description"#:将暂存区进行提交
5.git commit --amend #修改最后一条提交的 commit description,
6.git pull #:从远程库抓取下来
7.git push origin xxx #:把本地库xxx分支推到远程库
8.git push origin master #:把文件主分支推到
9.git status #:显示工作目录和暂存区的状态
10.git log #:查看提交历史
11.git log --pretty==oneline #以精简模式显示提交历史记录
12.got reflog #:可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
13.git branch #:获取分支信息
14.git checkout -b xxx #:创建并切换分支
15.git branch xx #:创建分支
16.git branch -d xx #:删除已合并的分支
17.git branch -D xx #:删除未合并的分支
18.git diff #:比较工作区与暂存区
19.git merge xxx #:使用 Fast-Forward合并分支xxx
20.git merge --no-ff -m "description" xxx #:不使用fast-forward方式合并,保留分支的commit历史
注:fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit
bug分支管理
git stash #:封存当前的工作现场
git stash list #:显示被封存的工作现场
git stash pop #:解封工作现场
标签管理
1. git tag xxxx #:创建当前版本的标签
2. git tag xxx commitid #:创建指定版本的标签
3. git tag #:查看所有的标签
4. git show xxx #:查看指定标签的详细信息
5. git tag -a xxx -m "description" commitid #:创建指定版本的标签并附加说明信息
6. git tag -d xxxx #删除本地版本库中的指定标签
7. git push origin :refs/tags/xxx #:删除远程仓库中的标签
8. git push origin --tags #:将所有本地标签推送到远程
9. git push origin xxxx #:将指定的一个标签推送到远程
生成公钥
ssh-keygen -t rsa -C "mail@mail.com"
cd .ssh/
cat id_rsa.pub
远程链接
git remote add origin git@github.com:Username/Repository.git
git push -u origin master
克隆
git clone git@github.com:Username/Repository.git
多人协作
推送分支【push】、
push:将本地的修改推送到远程版本库间的分支映射
主:git branch --set-upstream-to=origin/dev dev
从:git checkout -b dev origin /dev
版本回退
1.git reset --hard HEAD^:回退到上个版本
2.git reset --hard HEAD^^:回退到上上个版本
3.git reset --hard HEAD~100:回到上100个版本
4.git reset --hard HEAD commitID:回到某个版本(commitID)
撤销管理
① 改动了工作区,取消工作区的改动:git checkout -- xxx
② 改动了工作区,add了暂存区,取消暂存区的添加:git reset HEAD xxx git checkout -- xxx
③ 改动了工作区,add了暂存区,commit到了版本库,取消操作:git reset --hard HEAD^
错误整理
一:
问题描述
! [rejected] master -> master (fetch first)
error: 推送一些引用到 'git@github.com:Nancyhanhan/text1903.git' 失败
提示:更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 'git pull ...')。
提示:详见 'git push --help' 中的 'Note about fast-forwards' 小节。
出现原因:
出现这个问题是因为github中的README.md文件不在本地代码目录中,可以通过如下命令进行代码合并。
处理办法:
git pull --rebase origin master
git push origin master
二、
问题描述
#在$ git push origin master出现下列语句:
Everything up-to-date
出现的原因:
1.没有git add;
2.git add 了,但忘了git commit -m “提交信息”
3.上面两个步骤都成功执行,还出现这个错误。
4.那么很有可能是发生在新clone一个远程仓库且创建的目录下是空的,目录下必须有文件才能git push上传成功。
处理办法:
方法一:修改文件,然后重新add,commit
方法二:新建一个分支-跳到分支-然后将你的改动提交到新的分支上(add、commit)-跳到master-get merge 分支-git-diff -git push origin master-删除分支
三:
问题描述:
sign_and_send_pubkey: signing failed: agent refused operation
Permission denied (publickey).
fatal: 无法读取远程仓库。
请确认您有正确的访问权限并且仓库存在。
原因:示ssh-agent 已经在运行了,但是找不到附加的任何keys,就是说你生成的key,没有附加到ssh-agent上,需要附加一下
解决办法:
eval "$(ssh-agent -s)"
ssh-add
四:
问题描述:
fatal: 远程 origin 已经存在
解决方法:git remote rm origin,然后再add
五:
问题描述:
正克隆到 'tset718'...
warning: 您似乎克隆了一个空仓库。
push的时候会出现
error: 推送一些引用到 'git@github.com:GunnWong/tset718.git' 失败
原因:克隆的远程库里没文件,第一次单独push会报错