Git常用命令

1. 简易创建仓库

github创建仓库并从本地更新最简单的方式为:

  1. 在github网站手动创建仓库
  2. git clone + URL 克隆下来


2. 从本地创建仓库并推送至Github

2.1 本地创建分支并推送到指定远端仓库

  1. 新建文件夹
  2. 执行 git init 将文件夹初始化为一个git工作目录
  3. 执行 git branch -b "branch_name" 创建一个本地分支
  4. git add . & git commit -m "注释"
  5. 在远端创建一个仓库 test-remote-repository
  6. 执行git remote add branch_name git@github.com:UserName/test-remote-repository.git 将本地分支与远端仓库链接起来
  7. 执行 git push -u branch_name 即可在远端创建一个同名分支,路径为 remotes/origin/branch_name


3. 重命名分支

3.1 重命名本地分支

  1. 执行 git branch -agit branch --list 查看分支情况
  2. 执行 git switch branch-namegit checkout branch-name 切换分支
  3. 执行 git branch -m new-name 即可重命名


3.2 重命名远程分支

建议:删除远程分支,重新push

  1. 运行 git push origin --delete old-branch-name 删除远程仓库分支
  2. 运行 git push origin -u new-branch-name ,重新推送


4. 本地分支连接远程分支

1
2
3
git branch --set-upstream-to=origin/name
或者
git branch -u origin/name


5. 删除分支

5.1 删除本地分支

1
git branch -d name

5.2 删除远程分支

1
git push origin :refs/for/name


6. 代码撤销、回滚

6.1 回滚场景:已添加到暂存区时

即执行过 git add 添加到暂存区,但还没 commit,这时可以用 git reset HEAD 文件名 回滚。

执行以下命令回滚暂存区的修改:

1
git reset HEAD filename

回滚后工作区会保留该文件的改动,可重新编辑再提交,或者 git checkout -- 文件名 彻底丢弃修改。

6.2 回滚场景:已 commit,但还没有 push 时

即已经提交到本地代码库了,不过还没有 push 到远端。这时候可用 git reset 命令,命令格式为:

  1. 使用git log命令,查看分支提交历史,确认需要回退的版本

  2. git reset <要回滚到的 commit> 或者 git reset --hard <要回滚到的 commit>

需注意的是,提供的是 要回滚到的 commit,该 commit 之后的提交记录会被丢弃。

git reset 默认会将被丢弃的记录所改动的文件保留在工作区中,以便重新编辑和再提交。加上 --hard 选项则不保留这部分内容,需谨慎使用。

6.3 回滚场景:已 push 到远端时

使用 git revert -n <要回滚的commit>

注意:一定要用revert!




7. git commit 撤销

在执行完 git commit -m "" 后,想要撤回 commit 时,执行下述代码:

1
git reset --soft HEAD^

HEAD^ 意思是上一个版本,也可以写成 HEAD~1
如果进行了 2 次 commit,都想撤回,可以使用 HEAD~2


7.1 撤销commit,同时撤销add . 不撤销修改代码

使用 --mixed ,默认就是不撤销修改代码

1
2
3
4
git reset --mixed HEAD^

git reset HEAD^
// 效果和 git reset --mixed HEAD^ 一样,--mixed 是默认参数


7.2 撤销 commit,不撤销git add .

使用 --soft

1
git reset --soft HEAD^


7.3 撤销 commit、撤销 git add . 操作、撤销修改代码

1
git reset --hard HEAD^


8. 修改 commit -m 的备注信息

8.1 最近一次 commit 信息修改

执行 git log 可以查看 git 日志信息以及指向分支。

  • 直接执行 git commit --amend 打开vim直接修改

8.2 修改历史 commit -m 的备注信息

  1. 使用 git rebase -i HEAD~2,进入编辑界面,其中 HEAD~2 是选择哪一次commit记录

  2. 将对应记录中的 pick 改成 edit

  3. git commit --amend 后编辑信息

  4. git rebase --continue 返回到正常分支上



9. reset or revert?

reset和revert都可以用来回滚代码,区别是:reset是用来"回退"版本,而revert是用来"还原"某次或者某几次提交。

revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在; reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

命令 是否抹掉历史记录 适用场景
git reset 是,回滚的历史会消失 本地未push的记录
git revert 否,历史记录保留,回滚后重新生成提交记录,也会生成新的 commit_id 回滚已经push的内容


10. 其他常用命令

  • 为本地仓库增加一个新的远程仓库,并命名: git remote add [name] [url]

  • 第一次与远程分支建立关联使用: git push –u

  • 修改远程仓库名称: git remote rename [old] [new]

  • 删除远程仓库:git remote rm [remote-name]