git:"更新被拒绝,因为您当前分支的提示已落后......"但如何看待差异?

时间:2017-07-25 03:11:33

标签: git

我刚刚完成了一段代码。想要推动并获得已经很有名的:

  

提示:更新被拒绝,因为您当前分支的提示是   提示背后:它的远程对手。集成远程更改   (例如提示:' git pull ...')再推一次。

现在我已经在这里多次看过这个问题,例如

Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g

Updates were rejected because the tip of your current branch is behind

根据具体情况,解决方案是

  • git pull,因此远程更改合并到我的本地工作,或者
  • git push -f,强制更新远程(原始)分支。

现在,我已经有一段时间没有在这个分支上工作了。我不一定想远程更改合并到我当前的工作中!我也不知道我是否可以安全强制更新原始分支......

我怎样才能看出差异并决定哪种差异最适合我的情况?

3 个答案:

答案 0 :(得分:4)

为了查看差异,首先需要从原始存储库中获取提交:

git fetch origin

现在你可以看到差异(假设你在主分支上) git diff HEAD..origin/master

现在,您拥有了mergerebase push <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!--build:css css/styles.min.css --> <link rel="stylesheet" href="scss/styles.scss"> <!-- endbuild --> </head> <body> </body> </html> var gulp = require('gulp'), sass = require('gulp-sass'), useref = require('gulp-useref'), // Use to concatenate files gulpIf = require('gulp-if'), cssnano = require('gulp-cssnano'), uglify = require('gulp-uglify'), imagemin = require('gulp-imagemin'), imagecache = require('gulp-cache'), del = require('del'), runsequence = require('run-sequence'); /* ********************************* */ // PRODUCTION TASKS ONLY \\ /*Used to start with a clean slate on the public folder */ gulp.task('clean:public', function () { return del.sync('public'); }) gulp.task('watch:prod', function () { gulp.watch('src/scss/**/*.scss', ['sass']); }); gulp.task('sass:prod', function () { return gulp.src('src/scss/**/*.scss') .pipe(sass()) .pipe(gulp.dest('public/css')) }); gulp.task('useref:prod', function () { return gulp.src('src/*.html') .pipe(useref()) .pipe(gulpIf('*.js', uglify())) .pipe(gulpIf('*.css', cssnano())) .pipe(gulp.dest('public')); }); gulp.task('images:prod', function () { return gulp.src('src/images/**/*.+(png|jpg|gif|svg)') .pipe(imagecache(imagemin([ imagemin.gifsicle({interlaced: true}), imagemin.jpegtran({progressive: true}), imagemin.optipng({optimizationLevel: 5}), imagemin.svgo({plugins: [{removeViewBox: true}]}) ]))) .pipe(gulp.dest('public/images')); }); gulp.task('cssimages:prod', function () { return gulp.src('src/css/cssimages/**/*.+(png|jpg|gif|svg)') .pipe(imagecache(imagemin([ imagemin.gifsicle({interlaced: true}), imagemin.jpegtran({progressive: true}), imagemin.optipng({optimizationLevel: 5}), imagemin.svgo({plugins: [{removeViewBox: true}]}) ]))) .pipe(gulp.dest('public/css/cssimages')); }); /* BRING EVERYTHING TOGETHER */ gulp.task('build:prod', function (callback){ runsequence ( 'clean:public', ['sass:prod','useref:prod','images:prod', 'cssimages:prod'], callback ) }) 之前所需的知识。

答案 1 :(得分:1)

最近,当我使用git checkout -b feature/abc创建新分支,提交了一些更改,然后尝试git push --set-upstream origin feature/abc来创建拉取请求以进行审核时,我发生了这种情况。发生错误是因为当我认为我在本地定义分支时,远程分支已经存在。删除远程分支解决了问题,我的推送成功。

答案 2 :(得分:0)

如果您要放弃本地更改,则应运行git reset --hard @{u}。再次注意这是一些数据不可逆转的动作,所以在运行它之前一定要确定。方法如下:

要查看您当前拥有的本地提交,可以使用git log HEAD --not --remotes,与任何远程分支或git log @{u}..HEAD进行比较,以查看特定于跟踪分支的差异。

要查看您在本地提交的实际差异,请运行git diff @{u}...。这将忽略远程进度,并仅显示您的更改。

要查看未提交的更改,请运行git diff HEAD

PS:您应该先运行git fetch origingit remote update来更新跟踪参考。