Git:基本操作
跳到导航
跳到搜索
常用操作
仓库
命令 | 说明 | 备注 |
---|---|---|
git init
|
初始化Git仓库 |
|
git clone
|
克隆Git仓库 |
|
git clone
可以所用不同的协议,包括ssh
,git
,https
等:git clone git@github.com:fsliurujie/test.git
:SSH协议git clone git://github.com/fsliurujie/test.git
:GIT协议git clone https://github.com/fsliurujie/test.git
:HTTPS协议
- (常用ssh,因为速度较快,还可以配置公钥免输入密码)
修改
命令 | 说明 | 备注 |
---|---|---|
git add
|
将工作区新增或修改的文件添加到暂存区 |
|
git commit
|
提交暂存区到本地仓库 |
|
git status
|
查看仓库当前的状态,显示有变更的文件 |
Microsoft Windows [版本 10.0.19041.508]
(c) 2019 Microsoft Corporation。保留所有权利。
D:\git\eijux>git status
On branch master
Your branch is up to date with 'eijux/master'.
Changed not staged for commit:
(use "git add <file>..." to include in what will be committed)
(use "git restore --staged <file>..." to unstage)
new file: 1.txt
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: 2.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
3.txt
|
git diff
|
比较文件的不同,即暂存区和工作区的差异 |
|
git stash
|
保存工作现场 |
|
git reset
|
回退版本 |
关于[HEAD]:
版本回退:
|
git revert
|
撤销操作 |
|
git restore
|
文件恢复 |
Note1:
Note2:
|
git mv
|
移动或重命名工作区文件 |
|
git rm
|
删除工作区文件 |
|
关于撤销工作区修改
- 若工作区修改未add到stage:
git checkout -- <file>
- 若工作区修改已add,但未commit:
git reset HEAD <file>
(1、从版本库commit中恢复到stage)git checkout -- <file>
(2、撤销工作区修改)
分支
命令 | 说明 | 备注 |
---|---|---|
git branch
|
分支命令 |
|
git checkout
|
签出分支(或文件) |
分支:
文件:
|
git merge
|
分支合并 |
Note2:参数
Note3:
|
git rebase
|
分支(变基)合并 |
Note2:
|
git cherry-pick
|
复制commit |
Note1:
Note2:
Note3:
|
git switch
|
切换分支 |
与
|
冲突合并:
冲突合并涉及文件添加、移除的操作,还包括文件修改内容的合并。
远程
命令 | 说明 | 备注 |
---|---|---|
git remote
|
管理远程仓库主机名 |
|
git pull
|
下载远程代码并合并: |
Note1:
Note2:
Note3:
|
git push
|
上传远程代码并合并: |
Note1:
Note2:
Note3:关于推送方式
|
|
获取远程主机的版本库更新(commit): Download objects and refs from another repository |
Note1:
Note2:
Note3:
|
设置分支追踪关系
设置本地分支与远程分支的追踪关系,可以更方便地使用 git pull、git push 等命令。 ——如果是通过 git clone 建立的本地仓库,则已有追踪关系。
设置命令:
git branch --set-upstream-to=<remote>/<remote_branch> <local_branch>
日志
命令 | 说明 | 备注 |
---|---|---|
git log
|
查看所有提交过的版本信息 |
Note1:
Note2:
|
git reflog
|
查看所有分支的所有操作记录 |
|
git blame
|
查看文件记录 |
|
标签
tag实际就是一个指向commit的指针,将一个有意义的tag名称与commit相关联。
git标签有两种类型:
- 轻量级的(lightweight):实际上它就是个指向特定提交对象的引用。
- 含附注的(annotated):
实际上是存储在仓库中的一个独立对象,有自身的校验和信息,包含标签名称,电子邮件地址和日期,及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。
命令 | 说明 | 备注 |
---|---|---|
git tag
|
git标签 |
Note:
如: Microsoft Windows [版本 10.0.19041.508]
(c) 2019 Microsoft Corporation。保留所有权利。
D:\git\eijux>git tag
D:\git\eijux>git tag rc1.0
D:\git\eijux>git tag -a rc2.0
# Write a message for tag:
# rc2.0
# Lines starting with '#' will be ignored.
D:\git\eijux>git tag rc3.0 ffa1
D:\git\eijux>git log --decorate
commit 5e26159ad738b08b9321eba9ecaeff39c8acc42f (HEAD -> master, tag: rc2.0, tag: rc1.0, eijux/master)
Author: Eijux <chen@eijux.com>
Date: Fri Nov 1 01:18:47 2019 +0800
idea commit test 01<E7><82><B9>18<E5><88><86>
commit ffa14211ab7088d9782de019328238dcfe09a4bc (tag: rc3.0)
Merge: 3fbc79a fc32a4a
Author: Eijux <chen@eijux.com>
Date: Thu Oct 31 16:03:24 2019 +0800
Merge branch 'master' of github.com:Eijux/eijux
D:\git\eijux>git show rc3.0
commit ffa14211ab7088d9782de019328238dcfe09a4bc (tag: rc3.0)
Merge: 3fbc79a fc32a4a
Author: Eijux <chen@eijux.com>
Date: Thu Oct 31 16:03:24 2019 +0800
Merge branch 'master' of github.com:Eijux/eijux
D:\git\eijux>
|