日常Git使用_git 查看当前提交人信息

7、回退版本

git reset 命令用于回退版本,可以指定退回某一次提交的版本。git reset 命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

–mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

git reset  [HEAD] 
// 实例:
$ git reset HEAD^            # 回退所有内容到上一个版本  
$ git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
$ git  reset  052e           # 回退到指定版本

–hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:

git reset --hard HEAD
// 实例:
$ git reset -–hard HEAD~3  # 回退上上上一个版本  
$ git reset –-hard bae128  # 回退到某个版本回退点之前的所有信息。 
$ git reset --hard origin/master    # 将本地的状态回退到和远程的一样 
注意:谨慎使用 -–hard 参数,它会删除回退点之前的所有信息。

回退后,因为本地版本落后于远程仓库,直接push提交不上去。需要git push -f,强制提交

8、删除/拉取分支

如果本地分支代码害怕有问题,那么删除该分支在本地代码后,从新拉取。以master为例

1、先切到别的分支,再git branch -d master,如果本地分支跟服务器不同需要-D

2、git checkout -b master origin/master // 拉取分支

9、提交记录
gitk 

该命令会打开一个git自带的历史记录可视化工具,比我们从浏览器里再打开页面看提交记录更方便一些

10、设置提交人名称
git config user.name  // 查询当前的提交人姓名
git config --global user.name sunquan // 把提交人姓名设置为sunquan
11、避免每次推送都输入密码
git config --global credential.helper store
12、获取当前 Git 仓库关联的远程仓库的 URL
 git config --get remote.origin.url 

该命令将返回当前 Git 仓库关联的远程仓库的 URL,也就是你的本地仓库代码是从哪个远程 Git 仓库拉取下来的。

13、关联本地代码与远程仓库
git remote add origin <remote-repository-URL>

14、关联本地分支到远程分支

如果未关联,pull时会提示

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/ develop

解决方法:假如分支名为v2.0.0

git branch --set-upstream-to=origin/v2.0.0

三:从本地上传新项目

  1. 本地文件夹中,git init
  2. 在github上新建代码库
  3. 输入命令git add . 将该目录下所有文件添加到本地仓库;
  4. 输入命令git commit -m “描述” 将刚刚添加的文件提交到本地仓库;
  5. GitHub上新建的远程仓库建立连接:git remote add origin https://github.com/xxx/xxx
  6. git push

如遇到 OpenSSL SSL_read: Connection was reset, errno 10054的报错,可以把ssl验证关闭:git config --global http.sslVerify “false”

四:合并分支实操

大多时候公司都是分工合作,可能一人一个分支,各自在自己的分支上开发,然后开发完毕后合并到主分支(master)上线。这时就需要在master上将你的分支合并过来,有时别人分支如果也合并到master了,就需要你先在你的分支上把master上最新的代码合并到你的分支上,然后push;再去master上把你的分支合并过来,然后push。记着push,合并只是合并到本地了。

比如我们现在在dev分支上,想将dev分支合并到master分支,操作如下:

1、确认当前分支

git branch -a                // 展示所有分支,高亮的为当前分支

2、首先切换到master分支上

git  checkout master

3、如果是多人开发的话 需要把远程master上的代码pull下来

//如果是自己一个开发就没有必要了,为了保险期间还是pull
git pull origin master 

4、然后我们把dev分支的代码合并到master上

git  merge dev

5、然后查看状态及执行提交命令

git status

On branch master
Your branch is ahead of 'origin/master' by 12 commits.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean
//上面的意思就是你有12个commit,需要push到远程master上 

6、最后执行提交命令

git push origin master

五:git不能先commit后再pull

今天遇到一个在使用git上的一个误区。具体的问题现象是:

我commit后再pull而不能在本地合并的情况,结果导致我的commit直接把同事的修改覆盖了。因为相对于我此次的commit的A版本是同事的提交的B版本的上一个C版本,我直接是对C版本进行的修改,就是因为我没有先把同事的B版本先pull下来在本地产生一个最新的版本的合并。

我一直都是先commit后再pull,这样能“避免”冲突,事实上这样肯定不行,这样会导致你的commit不是基于最新的版本来进行的,而是上一个版本,这其中有其他的提交而在服务器上产生了最新的版本。而这样避免冲突的方式是错误的,更像是躲开了冲突。正确的操作是先pull下来,再添加,然后冲突解决,然后提交推送.

下面有一个简单的图示:

六:.gitignore添加无效

有一些包含密码的文件我们不想上传git,这时大家都知道把文件路径添加到.gitignore中即可。

但是我在我的老项目中,尝试了几次都不起效果。原来是如果某些文件已经被纳入了版本管理中,在.gitignore中再声明也是不起作用的。

解决方法: git清除本地缓存(改变成未track状态),然后再提交:

1、git rm -r --cached .
2、将不需要上传git的文件添加到.gitignore
3、将所有文件再add commit push上去

gitignore中的文件在github等远程仓库上是没有的,当然本地仓库是有的

ignore的文件,本地代码中文件名称颜色会置灰,且无法记录改动

七:解决冲突

1、当我们pull代码,git命令提示pull失败,拉的代码会把本地代码覆盖。这就是因为有文件冲突

2、这时,我们把本地代码暂存(stash)下,然后再pull,即可拉去成功。

3、此时大概率有两位文件,

  • 一类为须要我们手动合并,因为和别人改了同一行,可自行决定incoming那部分
  • 一类在本地仓库中已自动合并,因为我们和别人改了同一个文件,但不是同一行,git已自动合并,且add到了暂存区

4、将手动解决冲突后的文件add到暂存区,然后连同自动合并的在暂存区里所有的文件都commit(我曾被同事将此部分代码舍弃导致代码丢失),然后push即可。如下为需要解决冲突的场景

5、以上为pull操作时的冲突场景,合并代码也会出现冲突的场景。跟上面一样操作即可。

如果合并代码出现冲突,手动解决了冲突,并add了该文件。这时后悔了,不想再合并了,只需要放弃暂存区里的更改即可,此时git status会发一切都没有改变。

这是因为虽然合并了冲突并且add到暂存区,但后来撤销了更改,最终是没有commit到本地仓库,且没有push到远程仓库。故一切都没有改变

八:命令行与开发工具区别?

存在在idea可视化配置好的git信息,在命令行中不能使用的情况。

比如idea可视化工具关联了本地代码与git url,且用工具可以正常进行pull/commit/push等操作。

但是在命令行中使用git status等命令时直接报错,报错信息如下

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值