HEAD
指最新版本
HEAD^
指上一个版本
HEAD^^
指上两个版本
HEAD~100
指上一百个版本
…
HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以,HEAD
指向的是当前分支。
git init
初始化仓库
git init --bare
创建裸仓库。裸仓库没有工作区,服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。
git config
配置用户
git config --global user.name "x"
,git config --global user.email xx@xx.x
。 windows仓库配置文件在仓库.git/config
。 windows用户配置文件在用户目录下%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 add
,git 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 test
,git checkout test
。git 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
提交。
git merge --no-ff -m "xxx" test
,表示禁用Fast-forward
进行合并。
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 Branch1
orgit push -u origin localbranch:Branch1
推送分支到远程分支Branch1git push origin :Branch1
用一个空分支去更新,表示删除远程分支Branch1origin指代远程仓库,
:
前指本地分支,:
后指远程分支。
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
远程仓库更换地址