“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
|