[git]如何repo sync一份干净的code

android 系統開發會需要經常sync code,如果單獨使用 repo sync 命令,會出現類似以下錯誤:

kernel-3.10/: discarding 1 commits
error: device/common/: device/common checkout 270d71d1cf6bca70c763edb4b6c2162ac9f5d680 
error: vendor/google/: platform/vendor/google/ checkout 38ab36dd74b552833f67480c618507804626e4de 

這是本地改動跟remote code衝突等原因引起,這裡的本地改動也有可能是build 時候修改的。這個解決辦法是進到對應的目錄進行 checkout 操作.



也有在repo sync 之前下命令的時候一步到位的命令,會方便很多:

sudo chown -R user:user ./*;repo forall -c 'git reset --hard; git clean -f -d -x'; time repo sync; date;

chown 更改文件擁有者和所屬組別。

repo forall 遍歷 git 目錄。

git reset --hard 是將當前HEAD 重置,不會留下之前的痕跡。

git clean 清除未追蹤的文件。d是目錄,f是文件。

最後再repo sync,這個時候download 下來的code 就是服務器上一致的code了。



另外,如果要單獨sync一個git目錄,可使用以下命令:

time repo sync git_dir;date


[end_by_ChampWang]



你可能感兴趣的:(Git,skill,Android)