2.1 基础操作命令
2.1.1 创建仓库
git init创建当前目录为本地仓库
执行命令后,会在对应的仓库中创建
.git目录,这个目录是git用来跟踪版本库的,最好不要修改内部文件,不然容易出现问题Linux环境下,可能无法查看到这个目录,因为这个目录是隐藏的,可以使用
ls -ah来查看
2.1.2 查看文件变更
git status(用于显示工作目录和暂存区的状态)
查看仓库当前状态,哪个文件被修改了
git diff <file>(显示提交和工作树等之间的更改)
查看文件具体修改了什么内容
不指定
<file>,可以查看全部变化
2.1.3 提交新文件
git add <path>(命令将文件内容添加到索引(将修改添加到暂存区))
<path>可以指定文件名,表示只添加这个文件<path>如果用.,则表示所有内容
2.1.4 查看历史操作记录
git log <--pretty=oneline>(显示提交日志信息)
展示信息中:最近一次
append GPL、上一次add distributed、最早一次wrote a readme file<--pretty=oneline>参数用于只显示提交版本号的信息git log --graph:可以查看到分支合并图
2.1.5 版本回退
git reset <--hard> <HEAD>(命令用于将当前
HEAD重置到指定状态。一般用于撤消之前的一些操作 相当于ctrl +z)--hard HEAD^回滚到最近一次提交 相当于版本HEAD的切换(本地仓库)--hard HEAD~3回滚三次提交 ,并删除后三次删除<HEAD>也可以替换成历史记录中对应的版本号
2.1.6 查看历史操作命令
git reflog查看用户的历史git操作命令
2.1.7 提交代码到存储库
git commit(将更改记录(提交)到存储库)
使用前提该文件已经被
git addgit commit -m '描述信息'添加描述修改后再次提交可以简写成
git commit -am '描述信息'
2.1.8 撤销修改 或 切换分支
git checkout切换分支或恢复工作树文件
删除了某个文件且没有
git commit提交,可以使用git checkout -- files进行恢复如果执行了
git checkout -b <name>,则是创建并切换到对应的分支
2.1.9 从版本库中删除文件
git rm <file>从工作区和索引中删除文件
使用
git rm来删除文件,同时还会将这个删除操作记录下来;而使用rm来删除文件,仅仅是删除了物理文件,没有将其从git的记录中剔除等同于手动删除文件,然后使用
git add <file>
2.1.10 管理一组跟踪的存储库
git remote <本地仓库分支> <远程仓库分支>git remote不带参数,列出已经存在的远程分支git remote -v | --verbose列出详细信息,在每一个名字后面列出其远程url添加远程库
git remote add <库名字> <url>模仿
git clone,但只跟踪选定的分支git remote add -f -t master -m master origin git://example.com/git.git/解除本地库与远程库的跟踪:
git remote rm origin
2.1.11 本地库所有内容推送到远程库
git push用于将本地分支的更新,推送到远程主机.
创建远程分支
git push <通常为origin> <本地分支名>:<远程分支名>删除远程分支:
git push origin :master把空的推到远程去就相当于删除远程的分支了git push origin --delete master删除远程master分支
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
git push origin不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用
–all选项git push --all origin如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做
git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。git push --force origingit push
不会推送标签(tag),除非使用–tags选项。git push origin --tags`将当前分支推送到远程的同名的简单方法,如下
git push origin HEAD
2.1.12 从远程库克隆到本地
git clonegit clone <版本库的网址> <本地目录名>从远程主机克隆一个版本库
2.1.13 分支管理
git branch <name>git branch列出本地仓库的分支git branch -r查看远程分支git branch -a查看本地和远程分支(远程分支基本为origin/dev这种类型)git branch <name>创建一个name的分支(也可以使用2.8.1中的命令,直接创建并切换分支)git branch -m <name> <changName>给分支改名字git branch -d [branchname]删除本地已合并的分支git branch -D [branchName]强制删除分支git branch -vv看本地分支关联(跟踪)的远程分支之间的对应关系查看当前远程仓库信息
git remote -vvgit手动建立关系
git branch --track xx origin/newbranch本地xx和远程dev 建立关系(本地没有的分支)git branch --set-upstream-to=origin/<branch> branchName设置本地分支追踪远程分支
2.1.14 合并分支
git merge将两个或两个以上的开发历史加入(合并)一起。
要将A分支合并到B分支,在B分支环境下,执行
git merge A即可git merge --no-ff -m "merge with no-ff" <name>:禁用Fast forward并合并,表示此次合并要创建一个新的commit(描述2中,A被删除了,B分支上依旧可以查出合并的记录)
2.1.15 切换分支
git switch防止与撤销修改混淆,这个专用切换分支
git switch -c <name>:创建并切换到名为<name>的分支git switch <name>:切换到名为<name>的分支
2.1.16 临时储藏(方便修复紧急Bug,不影响现有修改)
git stash将更改储藏在脏工作目录中
此时操作会和上一次操作有冲突但是不想丢弃本次操作可以保存至脏读目录中
git stash list:列出所有储藏的修改git stash show:进行检查git stash apply:恢复(可能在不同的提交之上)调用没有任何参数的
git stash相当于git stash savegit stash drop:删除临时储存git stash pop:恢复并删除临时储存
2.1.17 复制特定提交到当前分支(临时修改bug后,防止分支冲突)
git cherry-pick快速复制合并分支
线上环境临时修改bug,修改合并到开发分支上:在开发分支环境下,执行命令
`git cherry-pick提交码`
2.1.18 将远端仓库与本地仓库合并
git pull(从另一个存储库或本地分支获取并集成(整合))
git pull <远程主机名> <远程分支名>:<本地分支名>下载远程主机的分支到本地分支如果没有新建本地分支如果远程分支想合并当前分支合并
git pull origin <远程分支名>相当于git fetch origin+git merge origin/分支名如果当前分支与远程分支存在追踪关系,
git pull就可以省略远程分支名git pull origin如果合并需要采用
rebase模式,可以使用–rebase选项。git pull --rebase <远程主机名> <远程分支名>:<本地分支名>git fetch和git pull的区别git fetch:相当于是从远程获取最新版本到本地,不会自动合并。$ git fetch origin master $ git log -p master..origin/master $ git merge origin/master以上命令的含义:
首先从远程的
origin的master主分支下载最新的版本到origin/master分支上然后比较本地的
master分支和origin/master分支的差别最后进行合并
git pull:相当于是从远程获取最新版本并merge到本地git pull origin mastergit fetch和git merge
2.1.19 把一个分支的修改合并到当前分支
git rebase另一个分支基础之上重新应用,用于把一个分支的修改合并到当前分支
相当于
merge但是更明显 是一串 比较清晰git rebase <branch1> <branch2>rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
2.1.20 打标签
git taggit tag列出现有的标签创建轻量级标签
git tag <name>创建指定提交位置的标签
git tag <name> <commit id>git tag -a <name> -m '描述'-a指定标签名字,-m指定描述git show展示版本信息git tag -d <name>删除标签打完标签推到远程
git push origin [tagname]一次性推送本地所以标签
git push origin --tags从远程库删除
git push origin :refs/tags/<name>
2.1.21 显示各种类的对象
git show <name>
2.1.22 移动或重命名文件
git mv
2.1.23 从另一个存储库下载对象和引用
git fetch从另一个存储库下载对象和引用。(取回)
git fetch <远程主机名>将某个远程主机的更新更新所有分支
git fetch
2.1.24 汇总git日志输出
git日志输出git shortlog统计人员的
commit:git shortlog -s -n
2.1.25 显示离当前提交最近的标签
git describe
Last updated
Was this helpful?