HEAD指最新版本 HEAD^指上一个版本 HEAD^^指上两个版本 HEAD~100指上一百个版本

HEAD严格来说不是指向提交,而是指向mastermaster才是指向提交的,所以,HEAD指向的是当前分支。 HEAD

git init

初始化仓库 git init --bare 创建裸仓库。裸仓库没有工作区,服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。

git config

配置用户git config --global user.name "x",git config --global user.email xx@xx.xwindows仓库配置文件在仓库.git/configwindows用户配置文件在用户目录下%USERPROFILE%linux仓库配置文件在仓库.git/config linux用户配置文件~/.gitconfig or ~/.config/git/config –global 选项,读写的就是这个文件。 linux系统配置文件/etc/gitconfig –system 选项,读写的就是这个文件。

#配置代理
#git config --global https.proxy #http://127.0.0.1:1080
#git config --global https.proxy #https://127.0.0.1:1080
git config --global http.proxy 'socks5://127.0.0.1:1080' 
git config --global https.proxy 'socks5://127.0.0.1:1080'
git config --global --unset http.proxy
git config --global --unset https.proxy

参考链接

git add

提交所有变更到暂存区,不包括Delete。

git add -u,提交已跟踪文件到暂存区。保存修改,不包括新文件。 git add -A,提交所有变更到暂存区,保存所有修改。 git add .,保存新添加和修改,不包括删除。

git add 到暂存区后,如果工作区文件进行了修改,需要再次git add,否则第二次修改不会被提交

git status

查看工作区、暂存区状态,git commit之前查看使用。

git diff

git diff xxx 比较xxx文件的差异 命令结果说明

git commit

提交变更

无法自动合并分支时,需要解决冲突再提交。

只能提交暂存区内容,如果工作区文件变更了且没有git addgit commit是不会提交的。

git log

查看日志

git log --graph命令可以看到分支合并图。

git reflog

命令日志。可以查看所有分支的所有操作记录(包括提交、回退、已删除的提交操作记录等)

git reset

回退版本

  • soft,本地版本库重置到指定版本,这次提交后的变更移动到暂存区,保留源码。
  • mixed,本地版本库重置到指定版本,重置暂存区,保留源码。默认
  • hard,本地版本库重置到指定版本,重置暂存区,源码也一起回退。 $git reset –hard HEAD^

某个文件回退到最近用git checkout -- file,临时切换分支git checkout <hash>,某个分支回退版本用git reset,恢复分支用git branch

git checkout

切换分支,可以使用git checkout <hash>直接切换到临时分支。 git checkout -- file,让文件回到最近一次git add或者 git commit状态。 git checkout -b test,创建并切换到test分支。

上面命令等于git branch testgit checkout testgit branch -d test,删除test分支。 Git鼓励使用分支完成某个任务,合并后再删掉分支。

git branch

列出所有本地分支,当前分支有个*git branch -a,列出所有分支包括已关联的远程分支。 git branch -r,列出已关联的远程分支。

git branch -D <name>小写d删除,大写D强行删除分支。

git branch <branch_name> HEAD@{4}恢复分支

git merge

合并分支到当前分支HEAD

如没有冲突将执行Fast-forward快进模式,直接把master指向HEAD提交。 Fast-forward

git merge --no-ff -m "xxx" test,表示禁用Fast-forward进行合并。 –no-ff

git stash

储存当前工作区现场 git stash list查看工作现场

git stash apply恢复工作区,stash内容不删除,git stash drop删除。 git stash pop恢复工作区,同时删除stash内容。

git fetch

git fetch <远程主机名> <分支名>取回特定分支。后使用git checkout -b newBrach origin/master,创建新分支。也可以git merge origin/master在本地合并远程分支。相当于git pull origin next:master

git pull

git pull <远程主机名> <远程分支名>:<本地分支名>取回远程主机某个分支的更新,再与本地的指定分支合并。

git branch --set-upstream master origin/next手动建立追踪关系,后可以使用git pull origin

git push

git push -f强制覆盖远程仓库 git push -u origin Branch1or git push -u origin localbranch:Branch1推送分支到远程分支Branch1 git push origin :Branch1用一个空分支去更新,表示删除远程分支Branch1

origin指代远程仓库,:前指本地分支,:后指远程分支。

git remote

git remote -v查看远程库相信信息。

git remote rm(remove)移除远程仓库。

git tag

查看所有标签 git branch查看分支,git checkout master切换分支, git tag <name>分支打标签。 git show <tagname>查看标签信息。 git tag -d <tagname>删除标签。 git push origin <tagname>推送标签到远程。git push origin --tags推送所有标签到远程。

如果标签推送到远程,要删除标签,先删除本地标签再push。


远程库默认叫origin 使用SSH连接远程仓库

  • 复制公钥到github
  • ssh -T git@github.com 测试连接
  • git remote add origin git@github.com:someaccount/someproject.git 关联远程库
  • git remote set-url origin git@github.com:someaccount/someproject2.git 远程仓库更换地址