Git常用命令
Git常用命令
1. 简易创建仓库
github创建仓库并从本地更新最简单的方式为:
- 在github网站手动创建仓库
- git clone + URL 克隆下来
2. 从本地创建仓库并推送至Github
2.1 本地创建分支并推送到指定远端仓库
- 新建文件夹
- 执行
git init
将文件夹初始化为一个git工作目录- 执行
git branch -b "branch_name"
创建一个本地分支git add .
&git commit -m "注释"
- 在远端创建一个仓库
test-remote-repository
- 执行
git remote add branch_name git@github.com:UserName/test-remote-repository.git
将本地分支与远端仓库链接起来- 执行
git push -u branch_name
即可在远端创建一个同名分支,路径为remotes/origin/branch_name
3. 重命名分支
3.1 重命名本地分支
- 执行
git branch -a
或git branch --list
查看分支情况- 执行
git switch branch-name
或git checkout branch-name
切换分支- 执行
git branch -m new-name
即可重命名
3.2 重命名远程分支
建议:删除远程分支,重新push
- 运行
git push origin --delete old-branch-name
删除远程仓库分支- 运行
git push origin -u new-branch-name
,重新推送
4. 本地分支连接远程分支
1 | git branch --set-upstream-to=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
命令,命令格式为:
使用git log命令,查看分支提交历史,确认需要回退的版本
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 | git reset --mixed HEAD^ |
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 的备注信息
使用 git rebase -i HEAD~2,进入编辑界面,其中 HEAD~2 是选择哪一次commit记录
将对应记录中的 pick 改成 edit
git commit --amend
后编辑信息
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]