常用
git init #把当前目录变成git可管理的仓库
git status #状态报告
git add #添加内容到下一次提交中
git diff #比较工作目录中当前文件和暂存区域快照之间的差异
git diff -staged #查看已暂存的将要添加到下次提交中的内容
git commit -m "text" #本次提交的描述
git commit -a #自动把所有已经跟踪过的文件暂存起来一并提交,跳过 git add 步骤
git commit --amend #如果自上次提交后未做任何修改,则将本次 commit 与上一次合并
git rm #删除文件,如果文件已加入暂存区,需要加 -f
git rm --cached #只删除暂存区,让文件保留在磁盘,并不继续跟踪
git mv #移动文件
git log #查看提交历史
git log -p -2 #仅显示最近两次提交
git log --graph #显示 ASCII 图形表示的分支合并历史。
git reset HEAD file #将 file 从暂存区中撤销
git checkout -- file #这里有两种情况:
#1:修改了文件后还未提交到暂存区,撤销已做的修改
#2:修改了文件后已提交到暂存区,又做了修改,撤销修改就回到添加到暂存区后的状态
远程仓库的使用
git remote #查看已经配置的远程仓库服务器
git remote -v #显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL
git remote add <shortname> <url> #添加远程仓库
git fetch [remote-name] #从远程仓库中拉取所有你还没有的数据,它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。
git push [remote-name] [branch-name] #将分支推送给服务器,只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效
git remote show [remote-name] #查看远程仓库信息
git remote rename <oldname> <newname> #修改远程仓库的简写名
git remote rm <remote-name> #删除远程仓库
标签
git tag -a <tagname> -m "<TagExplain>" # -a创建标签,-m存储在标签中的信息
git show <tagname> #可以看到标签信息与对应的提交信息
git push <remote-name> [tagname] #git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上
git push origin --tags #把所有不在远程仓库服务器上的标签全部传送到那里
git tag -d <tagname> #本地删除标签
分支
git branch #得到所有分支的一个列表,--merged 和 --no-merged 可以过滤掉已经合并或尚未合并到当前分支的分支
git branch -v # 查看每个分支的最后一次提交
git branch [branch-name] #创建分支
git branch -d <branch-name> #删除分支,如果包含了还未合并的工作,删除它时会失败,可以用 -D 强制删除
git branch -u [remotename]/[branch] # 设置当前本地分支跟踪远程分支
git branch -a #查看所有远程分支
git branch -vv #查看设置的所有跟踪分支,这些数字的值来自于你从每个服务器上最后一次抓取的数据。 这个命令并没有连接服务器,它只会告诉你关于本地缓存的服务器数据。 如果想要统计最新的领先与落后数字,需要在运行此命令前抓取所有的远程仓库
git log --decorate #查看各个分支指向的对象
git checkout <branch-name> #分支切换
git checkout -b <branch-name> #创建一个分支并切换到这个分支上
git checkout -b [branch] [remotename]/[branch] #自动创建一个跟踪远程分支的分支
git merge <branch-name> #合并分支到当前分支上,如果当前分支是要合并分支的直接上游,此时没有需要解决的冲突可以直接合并(称为 fast-forward )
git ls-remote (remote) #显式地获得远程引用的完整列表
git push [remotename] --delete [branchname] # 删除一个远程分支
5.查看修改(回退)日志
git log #显示所有提交过的版本信息
git reflog #可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
5.版本回退&&版本回复
git reset --hard HEAD^ #回退到上一个版本
git reset --hard 版本号 #回到任意一个版本号,版本号只需要写前几位
10.保存与恢复现场
当前分支的修改没有 commit 的话,是无法切换到其他分支的,(如果此时你不想提交)就需要用到保存与恢复现场
git stash #保存现场
git stash list #查看保存的工作现场
git stash apply #恢复现场,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
git stash pop #恢复的同时把stash内容也删了
11.多人协作
git remote -v #查看远程库信息
git checkout -b dev origin/dev #创建本地dev分支对应origin库的dev分支
当提交有冲突时(提交的该分支相对clone时已改变),需要先用git pull把最新的提交从 origin/dev 抓下来,然后在本地合并,解决冲突后再提交。
在git pull之前,往往需要先将本地dev分支与远程origin/dev分支链接(没执行此操作,会提醒)
git branch --set-upstream-to=origin/dev dev
然后再
git pull
手动解决冲突后,再push
多人协作的工作模式通常是这样:
首先,可以试图用git push origin 推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin 推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。