GIT使用过程中遇到的问题

一、Github设置ssh key以及提交代码

1.Github设置ssh key


注册完Github账号之后,在桌面上或者找个文件夹,右键git bash here 进入控制台窗口。
输入命令:cd ~/.ssh 然后回车,查看是否有ssh key
然后输入 ssh-keygen -t rsa -C"输入你的email",回车,然后提示你输入github的账户和密码。
生成ssh key之后去提示的路径文件夹下面找到id_rsa.pub文件,打开。复制里面的内容,粘贴至github的ssh key那里。这就算配置ssh key完成了。
最后可以输入ssh -T git@github.com测试,看是否提示确认连接,输入yes。就等于git和github之间的通讯配置完成了。
2.提交本地代码至Github


第一步:cd到本地项目的根目录下。在控制台输入:git init
第二步:讲项目的所有文件添加至仓库中 git add .这个命令行会将当前路径下的所有文件添加至仓库中。
第三步:将add的文件commit到仓库 git commit -m "注释语句"
第四步:去github上新建一个仓库,把地址拷下来。
第五步:git remote add origin 自己仓库的地址
第六步:上传代码至远程仓库 git push -u origin master
接下来按照提示输入github的用户名和密码。

二、git操作命令

1、撤回一次commit提交 ,还没有push,只是在本地commit

可以先用git log 查看commit历史,查看commit_id 

git reset --soft|--mixed|--hard <commit_id> 

对于  --soft|--mixed|--hard  ,这三种命令,查看以下图,直接一目了然。

working directory 为工作区,stage/index 为暂存区,history为提交历史记录区。

 

 

 

我使用的是,git reset --soft 0dfca09cd8e096f5ceac3cd408fdd16fc09128e3

回退一次commit提交,代码还是会在stage/index ,暂存区中

2、commit push 代码已经更新到远程仓库

对于已经把代码push到线上仓库,回退本地代码其实也想同时回退线上代码,回滚到某个指定的版本,线上,线下代码保持一致.要用到下面的命令

git revert <commit_id>

revert 之后本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新。

注意:git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit,看似达到的效果是一样的,其实完全不同。

第一:上面我们说的如果已经push到线上代码库, reset 删除指定commit以后,你git push可能导致一大堆冲突.但是revert 并不会.

第二:如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.

第三:reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

 

三、自己创建的分支上,要merge到dev分支,解决冲突

1、在dev分支上,git pull

2、切换到自己的分支上,git checkout myBranch1  ,

3、然后 git rebase dev,然后哪里有冲突解决冲突,解决后如果还有冲突没有rebase在自己的分支上,执行,git rebase --continue,继续解决冲突,解决完,如果还有冲突没有合并,继续执行,git rebase --continue,。。。

4、在自己分支解决完自己代码后,就可以在将分支merge到dev上了。

 

posted @ 2021-08-04 10:29  math_lin  阅读(52)  评论(0)    收藏  举报