前言
以前git用的不多,所以很多操作不清楚,这里记录一些日常遇到的一些问题。问题吧,不记录一下过一段时间又忘了,忘了还得查,麻烦的要死。先记录问题,问题以现象为主。
题外话,在win平台下使用命令行操作git的时候,最好是使用git bash,如果直接使用cmd或者IDE下的terminal,有可能会出现这样或者那样的小问题。
问题
7. 本地分支被改的乱七八糟,想要重新来怎么办,删掉它重新再拉取一个
记录
1. 怎么在github上创建一个自己的项目?
a. 自己电脑上执行命令ssh-keygen,一路回车,会在用户目录下的.ssh目录中生成两个文件,id_rsa(私钥),id_rsa.pub(公钥)。
b. 将公钥文件中的内容拷贝到github中,具体路径为:头像-->SSH and GPG keys-->New SSH key,粘贴进去。
c. github中new一个仓库,填上项目名,点击创建。刷新出来的页面里的操作可以直接粘贴到本地操作,看你喜欢哪一款了。如果是创建一个新的项目,则本地需要先创建一个文件夹,在文件夹所在目录下执行刚才从github中复制的命令。
2. 编写完代码后,提交代码到远程仓库的流程?
首先,这个问题下,我平时是命令和ide混用的,我觉得idea/goland用来提交代码也是很方便,尤其是在看代码改动的时候,一边看一边调整也很香。命令也有有点,比如,在文件很多的项目中,新添加了一个文件,但是忘记add了,那么使用ide推送修改到远程的时候,这个文件很容易就会忘记提交,那执行下面的这些命令前先git status看一下改动了什么就不容易忽略掉了。
a. git add filename/foldername,添加文件/文件夹(暂存区)
b. git commit -m 'comment',提交刚才添加的众多文件到本地仓库(本地仓库)
c. git push,将刚才提交的代码提交到远程仓库(远程仓库)
3. git add 提交后后悔了,想撤销?
执行git status后看到如下:
所以可以执行git restore --staged filename/foldername来撤销刚才的add。
4. git commit提交后后悔了,想撤销?
在push代码的时候会遇到这样一种情况,在要commit后push前看到一处代码改动有错误,想撤回提交,在IDE里的现象就是本来蓝色的改动文件已经变黑了,但是还没有push到远程,代码只存在与本地仓库中。这时应该使用git reset命令,这个命令用于版本回退。
git reset [--soft | --mixed | --hard] 分支
使用git reset的时候需要先明白,是要保留前面commit的代码还是放弃commit的代码,这也涉及到git reset的三个参数。这里参考了文档1。
a. git reset --hard HEAD^ 回退到HEAD分支前的一个分支,commit的修改也全部放弃了,直观上看就是,命令执行完,代码没了。
b. git reset --mixed HEAD^ 回退到HEAD分支前的一个分支,commit的修改保留在文件中,直观上看就是,命令执行完,使用git status看发现修改的文件以红色的形式被列了出来(未add)。--mixed可以不写,为默认。
c. git reset --soft HEAD^ 回退到HEAD分支前的一个分支,commit的修改保留在文件中,直观上看就是,命令执行完,使用git status看发现修改的文件以绿色的形式被列了出来(已add,未commit)。
5. 远程分支不想要了,想要删除怎么办?
创建分支的时候手滑了,写错了名字,想删除怎么办?执行下面的命令:
git push origin --delete 分支名
6. 远程分支删除后,又想找回来怎么办?
远程分支如愿删除了,但是又想留着它了该怎么办呢?首先本地分支要留着,我们知道git是分布式版本管理工具,本地的代码留着就相当于代码并没有丢,同步到远程仓库就好了,可以执行下面的命令:
git push origin --set-upstream 分支名
查看一下远程仓库,分支回来了,真好。
7. 本地分支被改的乱七八糟,想要重新来怎么办,删掉它重新再拉取一个
本地仓库的分支代码被改的乱七八糟,不知道哪里是对的哪里是错的,有时候就想着把这个分支删掉,再重新拉取一遍。或者这个分支就不想要了,删除完远程分支后,本地分支也想删除,可以执行下面的命令:
git branch -D 分支名
注意,在执行上面的命令的时候要先切换到其他的分支。好了,现在本地分支已经删除掉了,再执行下命令 git checkout分支名,分支又回来了,真好。
Updating...
参考:
1. https://www.jianshu.com/p/c2ec5f06cf1a