如何向 Github 推送代码?如何撤回在 Git 上的修改?【Git 常用命令】


本文记录了 git 中常用、但不容易记住的命令,它们分别是向新仓库推送代码的命令,以及撤回 git add, git commitgit push 的命令。

1 git 推送代码

如何通过 git 推送代码到新建仓库?

在 Github 创建好仓库后,我们需要复制这个仓库的 URL,然后运行如下命令:

git init
git add .
git commit -m "commit message"
# 添加远程仓库,并命名为 origin
git remote add origin <repo-url>
# 向远程仓库 origin 推送分支 master,并将其设置为上游分支
git push --set-upstream origin master

其中,难点在于 git remotegit push 这两个命令。

1.1 git remote 命令

git remote add origin <repo-url> 这个命令中,我们将位于 <repo-url> 位置的仓库,设置成为了我们的远程仓库,并且将这个远程仓库在本地命名为了 origin。注意:该仓库的实际名称没有发生改变,改变的只是本地名称。

在设置好仓库名称后,如果想要查看远程仓库的名称,可以使用 git remote 命令:

# 查看远程仓库的名称
git remote

1.2 git push 命令

git push --set-upstream origin master 这个命令可以这么理解:git push 表示想要推送代码,origin 表示想要推送到的上游仓库,master 表示想要推送的分支(可以理解为:将本地的 master 分支代码推送到 origin 上的 master 分支,如果 origin 上不存在 master 分支,则新建这个分支),--set-upstream 表示跟踪该分支,以后使用 git push 时,将默认推送该分支。

这个命令的 --set-upstream 可以简化为 -u

# 完整的推送命令
git push --set-upstream origin master
# 简洁的推送命令
git push -u origin master

2 git 撤回修改

如果我们不小心使用 git 执行了 git addgit commitgit push 命令,我们要如何撤回修改?

2.1 撤回 git add

git add 的作用是将文件添加到暂存区,因此撤回 git add 的操作就是将文件从暂存区中移除。

# 从暂存区中撤回特定文件
git restore --staged <file-name>
# 从暂存区中撤回所有文件
git restore --staged .

通过撤回 git add 操作,能够帮助我们重新选择要将哪些文件添加到暂存区,从而帮助我们选择更加合适的文件提交 commit。

2.2 撤回 git commit

撤回 git commit 的操作有两种,分别是软重置和硬重置。它们的命令如下:

# 软重置
git reset --soft HEAD~1
# 硬重置
git reset --hard HEAD~1

其中,软重置使用的是 --soft 选项,它仅仅撤回了提交的信息,但保留了文件在暂存区的状态,因此也保留了文件的更改。

第二种则使用 --hard 选项,它会将整个项目回退到过去的某一个状态,并删除在这之后所有的改动。

我认为使用软重置是更好的选择,因为硬重置会连代码修改一并删除,一旦执行不可撤回。

2.3 撤回 git push

撤回 git push 的命令也有两种,分别为强制撤回和反转撤回:

# 强制撤回
git reset --hard HEAD~1
git push origin master --force
# 反转撤回
git revert HEAD
git push origin master

其中,强制撤回是让项目强制回到上一个提交状态,舍弃在这之后的一切改动。而反转撤回是再进行一次 commit,这个 commit 会将当前 commit 所做的修改相反地执行一次,从而让代码恢复到上一个状态。

举个例子:假设,项目的分支如下:

A -> B -> C (HEAD)

我们想要撤回最新的提交(C)到状态 B。

如果选择强制撤回的方式,项目的分支会变成:

A -> B(HEAD)

这样 C 状态下所做的一切修改都会被丢弃。

如果选择反转撤回的方式,项目的分支会变成:

A -> B -> C -> D (HEAD)

此时,项目的 D 状态与 B 状态完全相同,实现了撤回的目的,同时也保留了在 C 中所做的修改记录,方便查阅所需的信息。

3 参考资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值