diff --git a/utils/pixel-merge.sh b/utils/pixel-merge.sh
new file mode 100755
index 0000000..da1fd5e
--- /dev/null
+++ b/utils/pixel-merge.sh
@@ -0,0 +1,82 @@
+#!/bin/bash
+#
+# Copyright (C) 2016 OmniROM Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+echo -e "Enter the AOSP ref to merge";
+read ref;
+
+echo -e "Do you want to merge it like squash ? type "yes" or "no" "
+read squash
+
+OPERATION="${squash}"
+
+branch_name=${ref}"-merge"
+
+branch_current="android-14.0"
+
+cd ../../../
+
+while read path;
+    do
+
+    project=`echo android_${path} | sed -e 's/\//\_/g'`;
+    aosp_project=${path};
+    if [ "${path}" == "build" ] ; then
+        path="build/make";
+    fi
+
+    echo "";
+    echo "=====================================================================";
+    echo " PROJECT: ${project} -> [ ${path}/ ]";
+    echo "";
+
+    rm -fr $path;
+    echo " -> repo sync ${path}";
+    ret=$(repo sync -d -f --force-sync ${path} 2>&1);
+    cd $path;
+
+    if [[ "${OPERATION}" == "yes" ]]; then
+        if git branch | grep ${branch_name} > /dev/null; then
+            git branch -D ${branch_name} > /dev/null
+        fi
+
+        echo " -> creating branch ${branch_name}";
+        ret=$(git checkout -b ${branch_name} 2>&1);
+        ret=$(repo start ${branch_name});
+    fi
+
+    # make sure that environment is clean
+    ret=$(git merge --abort 2>&1);
+
+    echo " -> Merging remote: https://android.googlesource.com/platform/$aosp_project ${ref}";
+    ret=$(git pull https://android.googlesource.com/platform/$aosp_project ${ref} 2>&1);
+
+    if echo $ret | grep "CONFLICT (content)" > /dev/null ; then
+        echo -e " -> \e[33mWARNING!: \e[31mMERGE CONFLICT\e[0m";
+        echo -e " -> please fix the merge conflict before push it.";
+    else
+        if [[ "${OPERATION}" == "yes" ]]; then
+            echo " -> merging squashed commits into ${branch_current} branch";
+            ret=$(git checkout ${branch_current} 2>&1);
+            ret=$(git merge --squash ${branch_name} 2>&1);
+            ret=$(git add . 2>&1);
+            ret=$(git commit --no-edit 2>&1);
+        fi
+        echo -e " -> \e[32mDONE!\e[0m";
+    fi
+
+    cd - > /dev/null;
+
+done < vendor/omni/utils/pixel-forked-list;
\ No newline at end of file
