“Git:基本操作”的版本间差异
		
		
		
		
		
		跳到导航
		跳到搜索
		
				
		
		
	
|  (→命令辨析) | |||
| 第480行: | 第480行: | ||
| D:\git\eijux> | D:\git\eijux> | ||
| </syntaxhighlight> | </syntaxhighlight> | ||
| |} | |} | ||
2022年6月4日 (六) 04:41的最新版本
常用操作
仓库
| 命令 | 说明 | 备注 | 
|---|---|---|
| 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>
 | 


