Git(五):历史提交与远程仓库修改

目录

4、查看提交历史

4.1 查看日志详细信息

4.2 查看某次提交信息

4.3 查看更改

5、撤销操作

5.1 取消暂存的文件

5.2 撤销对文件的修改

5.3 撤销远程记录

6 远程仓库的使用

6.1 查看远程仓库

6.2 添加远程仓库

6.3 从远程仓库中抓取与拉取

6.4 同步远程仓库

6.4.1 远程推送

6.4.2 同步远程

6.5 查看远程仓库

6.6 远程仓库的移除与重命名

6.6.1 代码退回


4、查看提交历史

4.1 查看日志详细信息

    在提交了若干更新,又或者克隆了某个项目之后,通过 git log 命令回顾提交历史。

# 按提交时间列出所有的更新,最近的更新安排在最上面
$ git log
# 会列出每个提交的:
# SHA-1 校验和、提交作者和电子邮件地址、提交时间以及提交说明
# 简易查看 

    常用的有:

  • -p 用来显示每次提交的内容的差异;

  • -2 仅显示最近两次的提交(除了显示基本信息之外,还附带了每次 commit 的变化);

  • --stat 查看每次提交的简略的统计信息: 列出所有被修改过的文件、有多少修改文件以及修改文件的那些行被移除或者添加、总结。

  • --pretty 指定使用不同于默认格式的方式展示提交历史: 内建的子选项:如 oneline :将每个提交放一行显示;还有 shortfull 和 fuller

  • format 定制显示的记录格式:
# --pretty=format 列出了常用的格式占位符写法及其代表的意义
$ git log --pretty=format:"%h - %an, %ar : %s"
  • --graph 添加了一些ASCII字符串来形象地展示你的分支、合并历史:

4.2 查看某次提交信息

    使用git show命令查看某一次提交详细信息。 git show命令采用SHA-1提交ID作为参数:

$ git show fb10c87d1c2164442a3280133609a31e12e47889

  • + / - : 表示添加 / 删除;

4.3 查看更改

    通过运行 git diff 命令来回顾文件的更改:

$ git diff

5、撤销操作

在任何一个阶段,都很有可能想要撤销某些操作,通过以下基本命令进行实现(有些撤销操作是不可逆的):

$ git commit --amend

    该命令会将暂存区的文件提交,如果自上次提交依赖未进行任何修改,那么快照会保持不变,而此时修改的只是提交信息。

    当提交后忘记暂存某些需要的修改,可以这样操作:

$ git commit -m 'initial commit'
$ git add forgtten_file
$ git commit --amend

    最终只会有一个提交,第二次提交将代替第一次提交的结果。

5.1 取消暂存的文件

    当我们修改了两个文件并且想要将它们作为两次独立的修改提交,但是却意外地操作了 git add * 暂存了它们两个,这个时候怎么进行取消暂存呢,通过 git status 命令提示进行:

    在 “Changes to be committed” 文字正下方,提示使用 git restore --staged <file>... 来取消暂存。 所以,我们可以这样来取消暂存 noadd.txt 文件:

$ git restore --staged <file name>

5.2 撤销对文件的修改

    当不想保留修改了的文件的时候,通过 git checkout -- filename 对修改进行恢复还原(或者 clone 完时、刚放入工作目录时)(恢复到最近的一次 add 或 commit):

$ git checkout -- filename

可以清楚的看到,在第一次将文件 noadd.txt 进行提交后进入文件跟踪才可以进行修改撤销操作,当对跟踪的文件进行内容修改之后,进行提交 git addgit commit 后,通过 git checkout -- noadd.txt 将修改后的文件进行撤销恢复到最近的一次提交操作当中。

  • 在 Git 中任何已提交的东西几乎总是可以恢复的。

  • 甚至那些被删除的分支中的提交或使用 --amend 选项覆盖的提交也可以恢复。

然而,任何你未提交的东西丢失后很可能再也找不到了。

5.3 撤销远程记录

    通过 git log 命令对所有提交的记录进行查看,选出指定的 commit ID,利用 git rebase -i 及其随后的 ID 进行对提交记录的指定删除撤销:

$ git rebase -i e10938c

    触发以上命令将会进入指定提交记录的文件内容,将 pick 更改为 drop 即可对指定的提交记录删除撤销,通过 wq 进行保存:

6 远程仓库的使用

6.1 查看远程仓库

    查看已经配置的远程仓库服务器,可以运行 git remote 命令,它会列出指定的每一个远程服务器的简写,也可以指定选项 -v,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL。Git 指定的默认仓库服务器的名字:origin

$ git remote -v
origin  https://github.com/2**2/git-demo0823.git

6.2 添加远程仓库

运行 git remote add <shortname> <url> 添加一个新的远程 Git 仓库,同时指定一个可以轻松引用的简写:

$ git remote add sn https://github.com/**/git-demo1024.git

    现在可以在命令行中使用字符串 sn 来代替整个 URL,例如,想拉取仓库中有但目前没有的信息,可以运行 git fetch sn

$ git fetch sn

    现在 test 分支可以在本地通过 sn/test 访问到。

6.3 从远程仓库中抓取与拉取

    从远程仓库中获得数据,可以执行:

$ git fetch [remote-name]

    这个命令会访问远程仓库,从中拉取所有还没有的数据。执行完成后,将会拥有那个远程仓库中所有分支的引用,可以随时合并或查看。

    clone 仓库会自动给其添加为远程仓库并默认以 origin 为简写。所以,git fetch origin 会抓取克隆(或上一次抓取)后新推送的所有工作。

git fetch 命令会将数据拉取到本地仓库 - 它并不会自动合并或修改当前的工作。

运行 git pull 通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

6.4 同步远程仓库

git push [remote-name] [branch-name]。 当你想要将 master 分支推送到 origin 服务器时(默认),那么运行这个命令就可以将所做的备份到服务器:

$ git push origin master
# 推送到远程服务器
$ git push origin master --force

1、只有当你有所克隆的服务器的写入权限,并且之前没有人推送过,这条命令才能生效。

2、当你和其他人在同一时间克隆,而别人先推送到上游之后你再推送,此时你的推送就会被拒绝,你必须先将他们的工作拉取下来并合并到你的工作之后才能推送。

6.4.1 远程推送

# add commit remote  push

# 本地仓库暂存,把当前目录下所有的文件及子目录都添加进行管理
# $ git add [filename]
$ git add .  

# 将本地仓库暂存区的文件提交到本地仓库
$ git commit -m 'C++编写规范.md'

# 将本地仓库和远程仓库相关联
# remote : 远程仓库的别名
# url : 新建仓库的链接
$ git remote add origin [url]

$ git push

6.4.2 同步远程

    执行git pull命令以将其本地存储库与远程存储库同步:

$ git pull

#################################################################
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From http://git.oschina.net/yiibai/sample
   51de0f0..01c5462  master     -> origin/master
Auto-merging main.py
CONFLICT (content): Merge conflict in main.py
Automatic merge failed; fix conflicts and then commit the result.

6.5 查看远程仓库

    如果想要查看某一个远程仓库的更多信息,可以使用 git remote show [remote-name] 命令。 如果想以一个特定的缩写名运行这个命令,例如 origin,会得到像下面类似的信息:

$ git remote show origin

列出远程仓库的 URL 与跟踪分支的信息:

1、正处于 test 分支;

2、如果运行 git pull,就会抓取所有的远程引用,然后将远程 test 分支合并到本地 test 分支。

3、也会列出拉取到的所有远程引用:

        哪些远程分支不在你的本地,哪些远程分支已经从服务器上移除了,还有当你执行 git pull 时哪些分支会自动合并。

6.6 远程仓库的移除与重命名

    如果想要重命名引用的名字可以运行 git remote rename 去修改一个远程仓库的简写名:

$ git remote rename gs newgs

    如果因为一些原因想要移除一个远程仓库,可以使用 git remote rm :

$ git remote rm sn3

6.6.1 代码退回

$ git reset --soft(hard) commit_id

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 当我们在Git中回退已经提交到远程仓库的代码时,需要注意一点:回退已经提交的代码会改变仓库历史记录,如果其他人正在协同开发,可能会造成混乱,因此在回退之前,一定要确保其他人都了解并同意进行该操作。 在Git中,我们可以使用以下步骤回退已经提交的代码: 1. 使用`git log`命令查看提交记录,找到想要回退到的提交提交哈希值(commit hash)。 2. 使用`git reset`命令回退到指定的提交。例如,如果要回退到提交哈希`abc123`,可以使用以下命令: ``` git reset abc123 ``` 3. 此时,本地仓库的HEAD指针已经回退到了指定的提交,但是远程仓库的代码还是没有变化的。我们可以使用`git push -f`命令强制推送本地回退的代码到远程仓库,例如: ``` git push -f origin <branch_name> ``` 注意:使用`-f`参数的`git push`命令会强制覆盖远程仓库的代码,所以在执行该命令前,一定要确认回退的代码无误。 请记住,回退已经提交到远程仓库的代码是一种重大操作,可能会对项目造成不可逆转的影响,因此在实施前请谨慎考虑、做好备份,并与团队成员充分讨论和确认。 ### 回答2: 要回退已经提交到远程仓库的代码,需要进行以下步骤: 1. 首先,使用`git log`命令查看提交历史,找到你想要回退到的commit的哈希值。 2. 然后,使用`git revert`命令回退到指定的commit。命令的格式为`git revert <commit>`,其中,`<commit>`代表你要回退到的commit的哈希值。 3. 接下来,会自动打开一个编辑器,用于撰写revert的commit信息。你可以修改信息或者直接保存退出。 4. 最后,使用`git push`命令将回退后的代码推送到远程仓库。命令的格式为`git push origin <branch>`,其中,`<branch>`代表你要推送的分支名称。 需要注意的是,通过revert回退已经push的代码时,实际上是创建了一个新的commit,该commit将撤销之前的commit的更改。所以在回退后,你的commit历史仍然会包含之前的commit。 如果你希望完全删除之前提交的代码,而不保留其历史记录,可以使用`git reset`命令。但是,要注意使用`git reset`命令会修改commit历史,慎重操作。 ### 回答3: 当已经将代码提交到远程仓库并且希望回退这些已经推送的代码时,有几种方法可以实现。 方法一:git revert 1. 使用git log命令查看提交历史,找到要回退的提交的哈希值: ``` git log ``` 2. 使用git revert命令回退指定提交,将指定的提交应用到当前分支上,并创建一个新的提交: ``` git revert <commit-hash> ``` 这将会将指定提交修改的内容撤销,并生成一个新的提交记录,保留原来提交历史记录。 方法二:git reset 注意,这种方法会改变仓库历史记录,慎用。 1. 使用git log命令查看提交历史,找到要回退的提交的哈希值: ``` git log ``` 2. 使用git reset命令回退到指定提交,这将会把目标提交以及它之后的提交都移动到工作区,同时删除了这些提交: ``` git reset <commit-hash> ``` 这将会移动当前分支指向目标提交,并将其余的提交仓库中删除。 以上两种方法都可以回退已经提交到远程仓库的代码。但是需要注意的是,如果在回退之后已经推送了回退之前的提交,需要使用`git push --force`命令将回退的修改推送到远程仓库。同时,回退代码之后,如果有其他开发者已经基于被回退的提交进行了开发,可能会出现代码冲突,需要协商解决后再推送修改

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值