Git 常用操作

Git 常用操作流程

1、初始化仓库

第一次初始化的两种方式

git init															# 初始化本地git仓库
git remote add origin git@github.com:帐号名/仓库名.git				# 添加远程版本库
git pull origin master												# 拉取远程分支
git clone git@github.com:git帐号名/仓库名.git							# 克隆仓库

测试1(初始化本地仓库,关联远程版本库):

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git remote add origin git@gitee.com:public-investment-adviser/testing.git

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git pull origin master
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 10 (delta 0), reused 0 (delta 0), pack-reused 7
Unpacking objects: 100% (10/10), 2.74 KiB | 7.00 KiB/s, done.
From gitee.com:public-investment-adviser/testing
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ ls -a
./  ../  .git/  README.en.md  README.md

测试2(克隆远程仓库):

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test
$ rm -rf ./gittest/

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test
$ ls
index.html  index.php  ModalBox/  phpinfo.php  SwiperUpDown_demo-master/

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test
$ git clone git@gitee.com:public-investment-adviser/testing.git gittest
Cloning into 'gittest'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 10 (delta 0), reused 0 (delta 0), pack-reused 7
Receiving objects: 100% (10/10), done.
Resolving deltas: 100% (1/1), done.

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test
$ ls
gittest/

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test
$ cd gittest/

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ ls -a
./  ../  .git/  README.en.md  README.md

2、普通提交

git add 文件名 						# 将某个文件存入暂存区
git add . 							# 将所有文件提交到暂存区
git add b c 						# 把b和c存入暂存区
git commit -m "备注信息"  			# 提交到仓库
git commit -am "备注信息" 			# 若已经有若干文件放入仓库,再次提交可以不用git add和git commit -m "备注信息" 这2步, 
									# 直接用将内容放至仓库 也可用git commit -a -m "备注信息"
git push -u origin master			# 推送到远端仓库,-u 保存远端分支地址,之后可以省略 origin master

push 之前先 pull 拉取一下。

注意: git commit -am 所提交的是 tracked 状态的文件,如果是新创建的文件它的状态是 untracked, 无法使用 -am 提交。

  • tracked状态本身又有三个子状态:modifiedstagedcommitted
    • 一个未经修改的文件被添加到 git 中之后将会是 staged 状态,如果文件已经在 git 中修改后就是 modified 状态,此时我们运行 git commit 将会使这个文件变为 committed 状态,变为 committed 状态之后,git 就为该项目生成了一个 snapshot(快照),我们就可以将其 push 到 github 中。

git status -s 所显示的状态码:

状态码描述
’ ’unmodified
Mmodified
Aadded
Ddeleted
Rrenamed
Ccopied
Uupdated but unmerged
??untracked
!!ignored

测试:

  • 添加一个文件到暂存区。
  • 添加多个文件到暂存区。
  • 添加所有改动过的文件到暂存区。
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ touch a.txt b.txt c.txt d.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ ls
a.txt  b.txt  c.txt  d.txt  README.en.md  README.md

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
A  a.txt
?? b.txt
?? c.txt
?? d.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add b.txt c.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
A  a.txt
A  b.txt
A  c.txt
?? d.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
A  a.txt
A  b.txt
A  c.txt
A  d.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -m 'add abcd'
[master cb272ed] add abcd
 4 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt
 create mode 100644 b.txt
 create mode 100644 c.txt
 create mode 100644 d.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 6 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 314 bytes | 314.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:public-investment-adviser/testing.git
   36ede56..cb272ed  master -> master
  • 添加到缓存区、备注操作合并,并提交。
    • 修改 a.txt 使用 -am 提交。
    • 添加一个 aa.txt,测试是否能是 -am 提交。
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ ls
a.txt  b.txt  c.txt  d.txt  README.en.md  README.md

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ echo 'a' >> a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
 M a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -am 'mod a'
[master c986073] mod a
 1 file changed, 1 insertion(+)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ touch aa.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
?? aa.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -am 'add aa'
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        aa.txt

nothing added to commit but untracked files present (use "git add" to track)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add aa.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -am 'add aa'
[master 7c4a280] add aa
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 aa.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s

3、撤回操作

⑴、放弃工作区的内容

git checkout . 			# 放弃工作区所有文件的修改
git checkout -- 文件名  	# 放弃工作区某个文件的修改,同 git restore
git restore 文件名 		# 撤消工作区的修改返回到最近一次add(暂存区)的版本或者最近一次commit(当前版本库)的版本

测试:

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ echo '111' >> a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   a.txt

no changes added to commit (use "git add" and/or "git commit -a")

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git checkout -- a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ cat a.txt
a

⑵、撤回暂存区内容

git reset HEAD 			# 撤回暂存区所有文件修改
git reset HEAD 文件名 	# 撤回暂存区指定文件

测试:

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ echo '222' >> a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ echo '222' >> b.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
M  a.txt
M  b.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git reset HEAD a.txt
Unstaged changes after reset:
M       a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
 M a.txt # 这里的 M 是红色的
M  b.txt 

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git reset HEAD
Unstaged changes after reset:
M       a.txt
M       b.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
 M a.txt # 这里的 M 是红色的
 M b.txt # 这里的 M 是红色的

⑶、撤回已提交内容

撤回暂存区的内容依然时当前版本,如果已经 commit 后,产生了新的版本,所以需要回退到上一版本的内容。

git reset HEAD^ 			# 恢复成上次提交的版本
git reset HEAD^^ 			# 恢复成上上次提交的版本,就是多个^,以此类推或用~次数
git reset HEAD~N 			# N直接指定倒数第几版本
git reset [--hard] [版本号|文件名]
	--soft:只是改变HEAD指针指向,缓存区和工作区不变;
	--mixed:修改HEAD指针指向,暂存区内容丢失,工作区不变;
	--hard:修改HEAD指针指向,暂存区内容丢失,工作区恢复以前状态;

git reset --hard HEAD^ # 撤销之前的commit,并且舍弃之前commit的修改
git reset --soft HEAD^ # 撤销之前的commit,并且保留之前的commit修改

测试:

  • 使用 --hard 撤回后,a.txt 中写入的 222 已经没有了,直接回退到上一次提交后的状态,之前已修改的文件内容不会保存。
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
M  a.txt
M  b.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -m 'commit撤回测试'
[master 3bc836d] commit鎾ゅ洖娴嬭瘯
 2 files changed, 2 insertions(+)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git reset --hard HEAD^
HEAD is now at 0e010fd 鍒嗙晫绾?
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ ls
a.txt  aa.txt  b.txt  c.txt  d.txt  README.en.md  README.md

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ cat a.txt
a
111
  • 使用 --soft 撤回后,a.txt 中写入的 222 依然存在,回退到本次提交前的状态,之前修改的文件内容会保留。
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ echo '222' >> a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
M  a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -m 'commit soft test'
[master cb48386] commit soft test
 1 file changed, 1 insertion(+)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git reset --soft HEAD^

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ cat a.txt
a
111
222

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
M  a.txt
  • 直接回退指定版本,使用 git reflog 查看版本号,使用 git reset [--soft] 版本号 回退。
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git reflog
0e010fd (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to HEAD^
cb48386 HEAD@{1}: commit: commit soft test
0e010fd (HEAD -> master, origin/master, origin/HEAD) HEAD@{2}: reset: moving to HEAD^
3bc836d HEAD@{3}: commit: commit撤回测试
0e010fd (HEAD -> master, origin/master, origin/HEAD) HEAD@{4}: reset: moving to HEAD
0e010fd (HEAD -> master, origin/master, origin/HEAD) HEAD@{5}: commit: 分界线
7c4a280 HEAD@{6}: commit: add aa
c986073 HEAD@{7}: commit: mod a
cb272ed HEAD@{8}: commit: add abcd

4、分支合并

git merge 分支名 						# 用于合并指定分支到当前分支
git merge --quit 					 	# 退出当前分支合并,当合并后冲突很多,要撤回合并分支就可以用这个命令
git merge --no-ff -m "message" 分支名 	# 加上–no-ff参数(Fast forward)就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并
git merge --squash 分支名 				# 舍弃分支的commit 记录,合并后重新commit,如果合并分支上的历史无意义,可舍弃就可以使用这个,使提交历史变得更清晰

测试:

  • 合并前必须要保证需要合并分支修改的内容都进行commit。
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git checkout -b dev
Switched to a new branch 'dev'

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ ls
a.txt  aa.txt  b.txt  c.txt  d.txt  README.en.md  README.md

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ echo 'a.txt' >> a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ git checkout master
Switched to branch 'master'
M       a.txt
Your branch is up to date with 'origin/master'.

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git merge dev
Already up to date.

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git checkout dev
Switched to branch 'dev'
M       a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ git commit -m 'dev mod a'
[dev a5b2f35] dev mod a
 1 file changed, 1 insertion(+)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git merge dev
Updating d9d12d4..a5b2f35
Fast-forward
 a.txt | 1 +
 1 file changed, 1 insertion(+)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ cat a.txt
a
111
222
a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git log
commit a5b2f35c073b1858486f467ea815d917dbfe4aac (HEAD -> master, dev)
Author: 云三木 <2440049332@qq.com>
Date:   Tue Jan 31 16:25:57 2023 +0800

    dev mod a

commit d9d12d42b07f2983f4248e9335e62eb4b4c8284e (origin/master, origin/HEAD)
Author: 云三木 <2440049332@qq.com>
Date:   Tue Jan 31 16:22:36 2023 +0800

    commit soft test

5、解决冲突

当我们在使用 pullmergerebease 时都可能会出现冲突。使用任意的文本编辑工具编辑有冲突的文件,去除冲突标记(就是>>>>>>>> ======= <<<<<<这样的东西),并把文本冲突解决掉。

然后使用 git add 有冲突的文件 ,这时文件的冲突标记就变成了修改标记了(使用 git status -s 查看)。

将所有有冲突的文件解决完后,使用 git commit -m "备注" 提交就算完成整个合并过程了。

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ vim a.txt
a
333
222
a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -m 'master mod a 01'
[master 84a14a4] master mod a 01
 1 file changed, 1 insertion(+), 1 deletion(-)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git checkout dev
Switched to branch 'dev'

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ vim a.txt
a
222
222
a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ git commit -m 'dev mod a 01'
[dev b90edaa] dev mod a 01
 1 file changed, 1 insertion(+), 1 deletion(-)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (dev)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git merge dev
Auto-merging a.txt
CONFLICT (content): Merge conflict in a.txt
Automatic merge failed; fix conflicts and then commit the result.

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master|MERGING)
$ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   a.txt

no changes added to commit (use "git add" and/or "git commit -a")

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master|MERGING)
$ cat a.txt
a
<<<<<<< HEAD
333
=======
222
>>>>>>> dev
222
a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master|MERGING)
$ git log --graph
* commit 84a14a4e2745276c2ca14046012eb2e4768f66aa (HEAD -> master)
| Author: 云三木 <2440049332@qq.com>
| Date:   Tue Jan 31 16:49:21 2023 +0800
|
|     master mod a 01
|
* commit 8be3febe6df1a0e7b67fdcf070ede8009c100233
| Author: 云三木 <2440049332@qq.com>
| Date:   Tue Jan 31 16:48:11 2023 +0800
|
|     dev mod a2
|
* commit a5b2f35c073b1858486f467ea815d917dbfe4aac
| Author: 云三木 <2440049332@qq.com>
| Date:   Tue Jan 31 16:25:57 2023 +0800
|
|     dev mod a
|
* commit d9d12d42b07f2983f4248e9335e62eb4b4c8284e (origin/master, origin/HEAD)
| Author: 云三木 <2440049332@qq.com>
| Date:   Tue Jan 31 16:22:36 2023 +0800
|
|     commit soft test

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master|MERGING)
$ vim a.txt
a
333
222
a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master|MERGING)
$ git status -s
UU a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master|MERGING)
$ git add a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master|MERGING)
$ git commit -m 'merge test 01'
[master 55ed4b3] merge test 01

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git log --graph
*   commit 55ed4b3c9cabb6c5a703703f02359739dff30797 (HEAD -> master)
|\  Merge: 84a14a4 b90edaa
| | Author: 云三木 <2440049332@qq.com>
| | Date:   Tue Jan 31 17:04:34 2023 +0800
| |
| |     merge test 01
| |
| * commit b90edaa22b32fc0c5c0630f4ce85fe6989074275 (dev)
| | Author: 云三木 <2440049332@qq.com>
| | Date:   Tue Jan 31 16:50:08 2023 +0800
| |
| |     dev mod a 01
| |
* | commit 84a14a4e2745276c2ca14046012eb2e4768f66aa
|/  Author: 云三木 <2440049332@qq.com>
|   Date:   Tue Jan 31 16:49:21 2023 +0800
|
|       master mod a 01
|
* commit 8be3febe6df1a0e7b67fdcf070ede8009c100233
| Author: 云三木 <2440049332@qq.com>
| Date:   Tue Jan 31 16:48:11 2023 +0800
|

6、版本回退

已推送到远程仓库后版本回退的两种方式:

git reset --hard commitId 	# 撤销并舍弃版本号之后的提交记录,commitId 选择撤销之前的那一次commitId 
git revert commitId 		# 撤销,但是保留了提交记录,commitId 是需要撤销的那一次commitId 

reset

添加 a.txt,推送到远端仓库,出现错误,现在需要紧急恢复上一版本。

回退步骤:

  • 根据 git log 找到 commitId。
  • 使用 git reset --hard commitId 回退到上一次提交后的版本,但是之前的工作区和暂存区内容会丢失。
    • 可根据 git reflog 找到之前 commitId 记录进行回退,恢复工作区和暂存区的内容,排查问题。
  • git push -f:强制推送远端仓库覆盖。
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ echo '111' >> a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -m 'master add a'
[master 120516e] master add a
 1 file changed, 1 insertion(+)
 create mode 100644 a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 6 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 311 bytes | 311.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:public-investment-adviser/testing.git
   f0975ac..120516e  master -> master

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git log
commit 120516e1db680e9efb7c56cc880401f1f7f7b2e0 (HEAD -> master, origin/master, origin/HEAD)
Author: 云三木 <2440049332@qq.com>
Date:   Tue Jan 31 17:21:26 2023 +0800

    master add a

commit f0975ac72092940e3cf828c08a3b3a48b87dc8b9
Author: 云三木 <2440049332@qq.com>
Date:   Tue Jan 31 17:20:40 2023 +0800

    删除测试文件

commit 55ed4b3c9cabb6c5a703703f02359739dff30797
Merge: 84a14a4 b90edaa
Author: 云三木 <2440049332@qq.com>
Date:   Tue Jan 31 17:04:34 2023 +0800

    merge test 01

commit b90edaa22b32fc0c5c0630f4ce85fe6989074275 (dev)
Author: 云三木 <2440049332@qq.com>
Date:   Tue Jan 31 16:50:08 2023 +0800

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git reset --soft f0975ac72092940e3cf828c08a3b3a48b87dc8b9

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ ls
a.txt  README.en.md  README.md

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git status -s
A  a.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git push -f
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:public-investment-adviser/testing.git
 + 120516e...f0975ac master -> master (forced update)

revert

回退步骤:

  • 添加 b.txt 并推送到远端仓库。
  • 根据 git log 查找 commitId,使用 git revert 回退。
  • 这时 b.txt 还没有还原,所以还需要使用 git cherry-pick 重放该提交。
  • 修改问题后,推送远端。
Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ touch b.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git add .

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git commit -m 'master add b'
[master 319e20f] master add b
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 b.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 6 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 306 bytes | 306.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:public-investment-adviser/testing.git
   a77377d..319e20f  master -> master

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git log
commit 319e20f2a684000e25153d90648898b3e6a03ca4 (HEAD -> master, origin/master, origin/HEAD)
Author: 云三木 <2440049332@qq.com>
Date:   Tue Jan 31 17:55:45 2023 +0800

    master add b

commit a77377d5254729ae5e65a5c44c67ebc6ba3fb57b
Author: 云三木 <2440049332@qq.com>
Date:   Tue Jan 31 17:55:08 2023 +0800

    删除测试文件

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git revert 319e20f2a684000e25153d90648898b3e6a03ca4
Removing b.txt
[master 0426ff1] Revert "master add b"
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 b.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ ls
README.en.md  README.md

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git cherry-pick 319e20f2a684000e25153d90648898b3e6a03ca4
[master d4d0520] master add b
 Date: Tue Jan 31 17:55:45 2023 +0800
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 b.txt

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ ls
b.txt  README.en.md  README.md

Admin@DESKTOP-CSH3FGN MINGW64 /e/work/test/gittest (master)
$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 6 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 418 bytes | 209.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To gitee.com:public-investment-adviser/testing.git
   319e20f..d4d0520  master -> master

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值