“Git:基本操作”的版本间差异
		
		
		
		
		
		跳到导航
		跳到搜索
		
				
		
		
	
|  (→日志) |  (→修改) | ||
| 第29行: | 第29行: | ||
| ! 命令 !! 说明 !! 备注 | ! 命令 !! 说明 !! 备注 | ||
| |- | |- | ||
| | <code>git add</code> | | '''<code>git add</code>''' | ||
| | 将工作区新增或修改的文件添加到暂存区 | | 将工作区新增或修改的文件添加到暂存区 | ||
| |   | |   | ||
| # 添加一个或多个文件到暂存区:<code>git add [file1] [file2]</code> | |||
| # 添加指定目录到暂存区(包括子目录):<code>git add [dir]</code> | |||
| # 添加当前目录下的所有文件到暂存区:<code>git add .</code> | |||
| |- | |- | ||
| | <code>git commit</code> | | '''<code>git commit</code>''' | ||
| | 提交暂存区到本地仓库 | | 提交暂存区到本地仓库 | ||
| |   | |   | ||
| # 提交暂存区到本地仓库:<code>git commit -m [message]</code> | |||
| # 提交暂存区的指定文件:<code>git commit [file1] [file2] -m [message]</code> | |||
| # <code>-a</code>参数设置直接提交(跳过<code>git add</code>):<code>git commit ([file1] [file2]) -am [message]</code> | |||
| |- | |- | ||
| | <code>git status</code> | | '''<code>git status</code>''' | ||
| | 查看仓库当前的状态,显示有变更的文件 | | 查看仓库当前的状态,显示有变更的文件 | ||
| |  | |   | ||
| <syntaxhighlight lang="PowerShell"> | |||
| 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 | |||
| </syntaxhighlight> | |||
| # Changed not staged for commit:修改文件,未add | |||
| # Changes to be committed:修改并add,未commit | |||
| # Untracked files:新增文件,从未add | |||
| |- | |- | ||
| | <code>git diff</code> | | '''<code>git diff</code>''' | ||
| | 比较文件的不同,即暂存区和工作区的差异 | | 比较文件的不同,即暂存区和工作区的差异 | ||
| |   | |   | ||
| # 查看尚未缓存(未add)的改动:<code>git diff ([file])</code> | |||
| # 查看已缓存(已add)的改动: <code>git diff --cached ([file])</code>(或<code>git diff --staged ([file])</code>) | |||
| # 查看已缓存与未缓存所有改动:<code>git diff HEAD</code> | |||
| # 显示摘要而非整个diff:<code>git diff --stat</code> | |||
| # 查看两次提交之间的差异:<code>git diff [first-branch]...[second-branch]</code> | |||
| |- | |- | ||
| | <code>git reset</code> | | '''<code>git reset</code>''' | ||
| | 回退版本 | | 回退版本 | ||
| |   | |   | ||
| <code>git reset [--soft | --mixed | --hard] [HEAD]</code><br/> | |||
| 关于参数: | |||
| # <code>--mixed</code>:(默认)重置缓存区未指定<code>commit</code>(工作区不变) | |||
| # <code>--soft</code>:将<code>HEAD</code>指向指定<code>commit</code>(工作区与缓存区不变) | |||
| # <code>--hard</code>:重置工作区、缓存区未指定<code>commit</code> | |||
| 关于[HEAD]: | |||
| # 当前版本:<code>HEAD^</code>或<code>HEAD~0</code> | |||
| # 上一个版本:<code>HEAD^</code>或<code>HEAD~1</code> | |||
| # 上上一个版本:<code>HEAD^^</code>或<code>HEAD^2</code> | |||
| # 上上上一个版本:<code>HEAD^^^</code>或<code>HEAD^3</code> | |||
| #: ''以此类推'' | |||
| |- | |- | ||
| | <code>git mv</code> | | '''<code>git mv</code>''' | ||
| | 移动或重命名工作区文件 | | 移动或重命名工作区文件 | ||
| |   | |   | ||
| # <code>-f</code>强制执行:<code>git mv -f [file] [newfile]</code> | |||
| |- | |- | ||
| | <code>git rm</code> | | '''<code>git rm</code>''' | ||
| | 删除工作区文件 | | 删除工作区文件 | ||
| |   | | | ||
| # 将文件从暂存区和工作区中删除:<code>git rm <file></code> | |||
| # 将文件从暂存删除(工作区保留):<code>git rm --cached <file></code> | |||
| # <code>-r</code>递归删除:<code>git rm -r *</code> | |||
| # <code>-f</code>强制删除:<code>git rm -f <file></code> | |||
| |} | |} | ||
2020年9月18日 (五) 13:17的版本
仓库
| 命令 | 说明 | 
|---|---|
| git init | 在当前目录初始化Git仓库 | 
| git init <newrepo> | 在指定目录( <newrepo>)初始化Git仓库 | 
| git clone <repo> | 从现有Git仓库( <repo>)中拷贝项目到当前目录 | 
| git clone <repo> <directory> | 从现有Git仓库( <repo>)中拷贝项目到指定目录(<directory>) | 
- 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 reset | 回退版本 | 
 
 关于[HEAD]: 
 | 
| git mv | 移动或重命名工作区文件 | 
 | 
| git rm | 删除工作区文件 | 
 | 
分支
远程
日志
| 命令 | 说明 | 示例 | 
|---|---|---|
| git log | 查看版本提交历史 | Microsoft Windows [版本 10.0.19041.508]
(c) 2019 Microsoft Corporation。保留所有权利。
D:\git\eijux>git log
commit 5e26159ad738b08b9321eba9ecaeff39c8acc42f (HEAD -> master, 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
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
commit 3fbc79ae2c8b7199c22133d1f3e4115848dbe749
Author: Eijux <chen@eijux.com>
Date:   Thu Oct 31 04:19:09 2019 +0800
    idea commit test
(END)
 | 
| git reflog | 查看版本命令历史 | Microsoft Windows [版本 10.0.19041.508]
(c) 2019 Microsoft Corporation。保留所有权利。
D:\git\eijux>git reflog
5e26159 (HEAD -> master, eijux/master) HEAD@{0}: pull eijux master: Fast-forward
fc32a4a HEAD@{1}: commit: add gitignore file
d07be0a HEAD@{2}: commit: branch management test
492be10 HEAD@{3}: merge dev: Merge made by the 'recursive' strategy.
fc1038b HEAD@{4}: checkout: moving from dev to master
9d0f76e (dev) HEAD@{5}: commit: write a line on branch dev
7640602 (eijux/dev) HEAD@{6}: checkout: moving from master to dev
fc1038b HEAD@{7}: reset: moving to HEAD
fc1038b HEAD@{8}: commit: branch back to master
7640602 (eijux/dev) HEAD@{9}: merge dev: Fast-forward
63fa5ac HEAD@{10}: checkout: moving from dev to master
7640602 (eijux/dev) HEAD@{11}: commit: add dev branch
63fa5ac HEAD@{12}: checkout: moving from master to dev
63fa5ac HEAD@{13}: pull eijux master --allow-unrelated-histories: Merge made by the 'recursive' strategy.
da60d32 HEAD@{14}: commit: add t5.txt
e88cb69 HEAD@{15}: commit: delete rmtest.txt
cc1e40c HEAD@{16}: commit: changed t4 and add t5
1707196 HEAD@{17}: commit: changed t4
378fb5a HEAD@{18}: commit: add t4.txt
e3501ab HEAD@{19}: commit: add t4
ea463d0 HEAD@{20}: commit: add t2.txt
92ad079 HEAD@{21}: commit: git commit single file test
061529e HEAD@{22}: reset: moving to 061529
69e722f HEAD@{23}: reset: moving to head
69e722f HEAD@{24}: reset: moving to head^
061529e HEAD@{25}: reset: moving to 061529
69e722f HEAD@{26}: reset: moving to 69e722
061529e HEAD@{27}: commit: git diff test
69e722f HEAD@{28}: commit: banben test
fd1fd5f HEAD@{29}: commit (initial): git add test
 |